详细解答可以参考官方帮助文档
如果用户需要不经过任何授权,通过浏览器即可匿名访问图片服务来处理图片,需要在创建Bucket的时候将Bucket的权限设置为公共读。
创建Bucket
设置Bucket权限
默认创建的Bucket权限是私有读写,Object默认继承Bucket的权限。 如果用户需要通过图片服务访问私有的Object,需要进行身份鉴权。
图片服务的用户鉴权方式和OSS是一致的,有两种鉴权方式:
具体可参考在Header中包含签名和在URL中包含签名。
假定用户绑定的域名www.test.com
对应的频道名字为image-demo
,object名字为example.jpg
,转换字符串为100w.jpg
。
首先需要计算Signature字段,计算方法如下:
Signature = base64(hmac-sha1(AccessKeySecret,
VERB + "\n"
+ Content-MD5 + "\n"
+ Content-Type + "\n"
+ Expires + "\n"
+ CanonicalizedOSSHeaders
+ CanonicalizedResource))
@处理参数
,(无处理参数则不填)。此时CanonicalizedResource例子如:/channelname/object@100w.jpg
。&
分割,添加到CanonicalizedResource中。此时的CanonicalizedResource例子:/channelname?style&styleName=YourStyleName
例子中的CanonicalizedResource为/image-demo/example.jpg@100w.jpg
。
注意:上例中的转换字符串可以是简单缩略,文字水印,图片水印、管道和样式(样式的分隔符是@!)
这里需要注意的是,使用URL签名中Expires和CanonicalizedResource不能为空。
最后生成在URL签名,必须在参数后包含OSSAccessKeyId、Expires、Signature这三项,具体生成方法可以参考OSS的API文档中的在URL中包含签名,上文的例子生成的URL签名如下:
http://www.test.com/example.jpg%40100w.jpg?OSSAccessKeyId=j4y55h3z88ihxxhlr9nhjjis&Expires=1392949804&Signature=IDBJ09e8Ow4GaPRM1yIf7plH/CI%3D
除了在URL中包含签名之外,还可以在HTTP请求的Header中包含签名,签名是由Authorization这个Header指定的,具体的构成规则如下:
"Authorization: OSS " + AccessKeyId + ":" + Signature
Signature = base64(hmac-sha1(AccessKeySecret,
VERB + "\n"
+ Content-MD5 + "\n"
+ Content-Type + "\n"
+ Date + "\n"
+ CanonicalizedOSSHeaders
+ CanonicalizedResource))
需要注意的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。