DeleteMultipleObjects中ContentMD5字段内容怎么计算
Access Key ID & Access Key Secret (API密钥)
用户注册OSS时,系统会给用户分配一对Access Key ID & Access Key Secret,称为ID对,用于标识用户,为访问OSS做签名验证。
现在Content-MD5这个字段和签名那里的算法一样 ,以官方oss开发文档参考准
由于OSS有着非常优秀的网络带宽质量,很多朋友希望基于OSS开发图片、音乐、视频等网站和应用。但如何有效地防盗链是个让人头疼的问题。这里介绍一个简单且安全的方法:通过签名URL防盗链。
首先,确认自己的bucket权限是private,即这个bucket的所有请求必须在签名认证通过后才被认为是合法的。然后根据操作类型、要访问的bucket、要访问的object以及超时时间,动态地生成一个经过签名的URL。通过这个签名URL,你授权的用户就可以在该签名URL过期时间前执行相应的操作。
签名的python代码如下:
url = my_store.sign_url (method, bucket_name, object_name,timeout = 60)
其中method可以是PUT,GET,HEAD,DELETE中的任意一种;最后一个参数“timeout”是超时的时间,单位是秒。一个通过上面python方法,计算得到的签名URL为:
http://storage.aliyun.com/sharedata/lingyun.jpg?OSSAccessKeyId=y6h7nbcothehvcp7jlnwmrw9&Expires=1335084740&Signature=LZeqnHSo5WkDNWKffKDgQBXR6fY=
通过这种动态计算签名URL的方法,可以有效地保护放在OSS上的数据,防止被其他人盗链。
技术来源:
http://dev.aliyun.com/read.php?tid=16
-------------------------
经过测试和交谈得到的最新答案head中的签名是CONTENT-MD5表示请求内容数据的MD5值 Delete Multiple Objects MD5字段内容方法:首先将Delete Multiple Object请求内容经过MD5加密后得到一个128位字节数组;再将该字节数组用base64算法编码;最后得到的字符串即是Content-MD5字段内容。 这里是先请求到xml文件的md5值,在经过base54位算法得到字段内容。 示例:python代码信息: def batch_delete_object(self, bucket, object_list_xml, headers=None, params=None): ''' Delete the objects in object_list_xml :type bucket: string :param: :type object_list_xml: string :param: :type headers: dict :param: HTTP header :type params: dict :param: the parameters that put in the url address as query string Returns: HTTP Response ''' if not headers: headers = {} if not params: params = {} method = 'POST' object = '' body = object_list_xml headers['Content-Length'] = str(len(body)) params['delete'] = '' base64md5 = base64.encodestring(md5.new(body).digest())if base64md5[-1] == '\n': base64md5 = base64md5[0:-1] headers['Content-MD5'] = base64md5 return self.http_request(method, bucket, object, headers, body, params) 相关信息请您参考api和sdk文件。 谢谢。
-------------------------
回 10楼(一折) 的帖子
实在不懂 请发工单至阿里云。谢谢
赞0
踩0