开发者社区 问答 正文

关于Bucket的操作之如何实现 GetBucketReferer?

Get Bucket Referer操作用于查看bucket的Referer相关配置。Bucket Referer防盗链具体见 OSS防盗链

请求语法GET /?referer HTTP/1.1
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue





响应元素(Response Elements)

名称描述
RefererConfiguration保存Referer配置内容的容器 类型:容器 子节点:AllowEmptyReferer节点、RefererList节点 父节点:无
AllowEmptyReferer指定是否允许referer字段为空的请求访问。 类型:枚举字符串 有效值:true 或 false`默认值:true 父节点:RefererConfiguration
RefererList保存referer访问白名单的容器。 类型:容器 父节点:RefererConfiguration 子节点:Referer
Referer指定一条referer访问白名单。 类型:字符串 父节点:RefererList


细节分析

  1. 如果Bucket不存在,返回404错误。错误码:NoSuchBucket。
  2. 只有Bucket的拥有者才能查看Bucket的Referer配置信息,否则返回403 Forbidden错误,错误码:AccessDenied。
  3. 如果Bucket未进行Referer相关配置,OSS会返回默认的AllowEmptyReferer值和空的RefererList。


示例


[backcolor=transparent]请求示例: Get /?referer HTTP/1.1
Host: oss-example.oss.aliyuncs.com  
Date: Thu, 13 Sep 2012 07:51:28 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfj byc: BuG4rRK+zNhH1AcF51NNHD39zXw=


[backcolor=transparent]已设置Referer规则的返回示例: HTTP/1.1 200
x-oss-request-id: 534B371674E88A4D8906008B
Date: Thu, 13 Sep 2012 07:51:28 GMT
Connection: keep-alive
Content-Length: 218  
Server: AliyunOSS

<?xml version="1.0" encoding="UTF-8"?>
<RefererConfiguration>
<AllowEmptyReferer>true</AllowEmptyReferer >
    <RefererList>
        <Referer> http://www.aliyun.com</Referer>
        <Referer> https://www.aliyun.com</Referer>
        <Referer> http://www.*.com</Referer>
        <Referer> https://www.?.aliyuncs.com</Referer>
    </RefererList>
</RefererConfiguration>


[backcolor=transparent]未设置Referer规则的返回示例: HTTP/1.1 200
x-oss-request-id: 534B371674E88A4D8906008B
Date: Thu, 13 Sep 2012 07:56:46 GMT
Connection: keep-alive
Content-Length: 308  
Server: AliyunOSS

<?xml version="1.0" encoding="UTF-8"?>
<RefererConfiguration>
<AllowEmptyReferer>true</AllowEmptyReferer >
< RefererList />
</RefererConfiguration>

展开
收起
青衫无名 2017-10-20 10:59:50 1920 分享 版权
阿里云 AI 助理回答

您提到的是阿里云对象存储服务(OSS)中用于配置和查看Bucket防盗链设置的操作——Get Bucket Referer。防盗链功能可以防止您的OSS存储空间中的资源被未经授权的第三方网站通过直接链接访问,从而保护您的资源不被滥用,并帮助控制流量成本。

请求语法

要获取Bucket的Referer配置,您可以使用HTTP GET方法,请求格式如下:

GET /?referer HTTP/1.1
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

这里SignatureValue需要根据OSS的AccessKey和SecretKey以及请求参数计算得出,确保请求的安全性。

响应元素

响应中包含以下元素来描述Bucket的Referer配置情况:

  • RefererConfiguration: 是一个容器,包含Bucket的Referer配置内容。
    • AllowEmptyReferer: 指示是否允许referer为空的请求访问,默认为true
    • RefererList: 包含一系列允许访问的referer白名单。

示例

请求示例

Get /?referer HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Date: Thu, 13 Sep 2012 07:51:28 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfj byc:BuG4rRKzNhH1AcF51NNHD39zXw=

已设置Referer规则的返回示例

如果Bucket已经配置了Referer规则,响应可能类似于:

HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906008B
Date: Thu, 13 Sep 2012 07:51:28 GMT
Connection: keep-alive
Content-Length: 218
Server: AliyunOSS
true
http://www.aliyun.com
https://www.aliyun.com
http://www.*.com
https://www.?.aliyuncs.com

这表示允许空Referer,且列出了一些具体的允许访问的referer。

未设置Referer规则的返回示例

如果没有配置任何Referer规则,响应可能是:

HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906008B
Date: Thu, 13 Sep 2012 07:56:46 GMT
Connection: keep-alive
Content-Length: 308
Server: AliyunOSS
true

同样显示允许空Referer,但RefererList为空,意味着没有额外的限制条件。

注意事项

  • 只有Bucket的所有者才能进行此操作。
  • 如果Bucket不存在或请求者无权访问,会分别收到404错误(NoSuchBucket)或403 Forbidden错误(AccessDenied)。
  • 默认情况下,如果不进行任何配置,OSS允许空Referer的请求访问。

通过这些配置,您可以有效地管理OSS资源的访问权限,提升安全性。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答