问题描述
开启了请求者付费的Bucket不允许匿名访问。
问题原因
您通过匿名访问的方式访问了一个Bucket,但是该Bucket开启了请求者付费模式,不允许被匿名访问。
问题示例
比如您发起了如下请求:
GET /testobject HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 24 Feb 2012 05:45:34 GMT
因为您的请求没有签名信息,所以是匿名访问。如果oss-example这个Bucket开启了请求者访问模式,您的请求就会被拒绝。
解决方案
如果您需要访问启用了请求者付费模式的Bucket,则必须提供身份验证信息,请参见使用阿里云SDK发起请求概述和在Header中包含签名。此时您需要支付请求所产生的费用,而不是Bucket的所有者支付。如果您是通过扮演阿里云RAM角色来请求数据,该角色所属的账号将为此请求付费。
此外,您还需要在请求的请求头或URL请求参数中携带x-oss-request-payer
取值为requester
,以表明您已了解需要支付请求和数据下载费用,否则将无法通过验证。比如如下在请求头中携带签名的请求:
GET /testobject HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 24 Feb 2012 05:45:34 GMT
Authorization: OSS qn6q**************:77Dv****************
x-oss-request-payer: requester
数据拥有者访问该Bucket时,可以不携带x-oss-request-payer
请求头。数据拥有者作为请求者访问该Bucket时,请求产生的费用由数据拥有者(也是请求者)来支付。
相关文档
文档内容是否对您有帮助?