0003-00000501

更新时间:
复制 MD 格式

问题描述

请求被拒绝。

问题原因

您发起的请求头中没有Referer字段或Referer字段为空,与请求Bucket设置的防盗链策略不相符。

使用SDK发起的API调用(请求头中包含Authorization字段)不受防盗链策略限制,只有签名URL访问和匿名访问会触发防盗链检查。使用STS临时凭证生成的签名URL不包含Authorization请求头,因此仍会受到防盗链策略校验:当请求Bucket的防盗链配置中AllowEmptyReferer为false,且请求未携带Referer请求头或Referer不在白名单内时,会返回本错误码(0003-00000501);若请求携带的Referer不在白名单内,则返回错误码0003-00000503,请注意区分这两种错误场景。

您可以通过以下命令验证签名URL的防盗链行为:

curl -H 'Referer: https://your-whitelisted-domain.com' '<签名URL>' -o file

如果不希望在访问签名URL时携带Referer请求头,也可以将请求Bucket的防盗链策略中AllowEmptyReferer设置为true。

问题示例

例如,您请求的Bucket的防盗链配置中AllowEmptyReferer取值为false,表示不允许Referer字段为空的请求访问OSS。

<RefererConfiguration>
  <AllowEmptyReferer>false</AllowEmptyReferer>
  <RefererList>
        <Referer>*.example.com</Referer>
  </RefererList>
</RefererConfiguration>

您发起的以下请求中没有携带Referer请求头,导致请求失败。

GET /test.txt HTTP/1.1
Date: Tue, 20 Dec 2022 08:48:18 GMT
Host: BucketName.oss-example-endpoint.aliyuncs.com

解决方案

您可以选择以下任意方案解决该问题。

  • 在请求中增加Referer请求头。

    GET /test.txt HTTP/1.1
    Date: Tue, 20 Dec 2022 08:48:18 GMT
    Host: BucketName.oss-example-endpoint.aliyuncs.com
    Referer: https://help.example.com
  • 如果您使用STS临时凭证生成的签名URL下载对象,可以在发起请求时通过curl命令添加Referer请求头:

    curl -H 'Referer: https://yourdomain.com' 'https://bucket.oss-cn-hangzhou.aliyuncs.com/object?Expires=...&OSSAccessKeyId=...&Signature=...'

    Referer中的域名需要在Bucket的防盗链白名单中。您可以在OSS控制台的目标Bucket的数据安全 > 防盗链页面查看和配置白名单。

  • 将请求所在Bucket的防盗链策略中AllowEmptyReferer取值设置为true。

    <RefererConfiguration>
      <AllowEmptyReferer>true</AllowEmptyReferer>
    </RefererConfiguration>

相关文档