开发者社区> 问答> 正文

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

Put Bucket Referer操作可以设置一个bucket的referer访问白名单和是否允许referer字段为空的请求访问。Bucket Referer防盗链具体见 OSS防盗链

请求语法PUT /?referer HTTP/1.1
Date: GMT Date
Content-Length:ContentLength
Content-Type: application/xml
Host: BucketName.oss.aliyuncs.com
Authorization: SignatureValue

<?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>





请求元素(Request Elements)

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


细节分析

  1. 只有Bucket的拥有者才能发起Put Bucket Referer请求,否则返回403 Forbidden消息。错误码:AccessDenied。
  2. AllowEmptyReferer中指定的配置将替换之前的AllowEmptyReferer配置,该字段为必填项,系统中默认的AllowEmptyReferer配置为true。
  3. 此操作将用RefererList中的白名单列表覆盖之前配置的白名单列表,当用户上传的RefererList为空时(不包含Referer请求元素),此操作会覆盖已配置的白名单列表,即删除之前配置的RefererList。
  4. 如果用户上传了Content-MD5请求头,OSS会计算body的Content-MD5并检查一致性,如果不一致,将返回InvalidDigest错误码。


示例


[backcolor=transparent]请求示例:
[backcolor=transparent]不包含Referer的请求示例: PUT /?referer HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 247
Date: Fri, 04 May 2012 03:21:12 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfj byc:KU5h8YMUC78M30dXqf3JxrTZHiA=

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


[backcolor=transparent]包含Referer的请求示例: PUT /?referer HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 247
Date: Fri, 04 May 2012 03:21:12 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfj byc:KU5h8YMUC78M30dXqf3JxrTZHiA=

<?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]返回示例: HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906008B
Date: Fri, 04 May 2012 03:21:12 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSS

展开
收起
青衫无名 2017-10-20 10:39:50 2160 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载