对象存储OSS支持对存储空间(Bucket)设置防盗链,即通过对访问来源设置白名单的机制,避免OSS资源被其他人盗用。referer命令用于添加、修改、查询、删除Bucket的防盗链配置。
注意事项
- 要添加或修改防盗链配置,您必须具有 - oss:PutBucketReferer权限;要查看防盗链配置,您必须具有- oss:GetBucketReferer权限;要删除防盗链配置,您必须具有- oss:DeleteBucketReferer权限。具体操作,请参见为RAM用户授权自定义的权限策略。
- 从ossutil 1.6.16版本开始,命令行中Binary名称支持直接使用ossutil,您无需根据系统刷新Binary名称。如果您的ossutil版本低于1.6.16,则需要根据系统刷新Binary名称。更多信息,请参见命令行工具ossutil命令参考。 
- 关于防盗链的更多信息,请参见防盗链。 
- 当您在OSS ON云盒中使用该命令时: - 将配置文件中的Endpoint替换为云盒Endpoint。更多信息,请参见云盒Endpoint。 
- 在本文已有示例的基础上添加--sign-version、--region以及--cloudbox-id选项。关于这三个选项的具体用法,请参见通用选项。 
 
添加或修改防盗链配置
如果Bucket此前未添加过防盗链配置,则使用该命令将为Bucket添加防盗链配置。如果Bucket此前已添加防盗链配置,则使用该命令将直接覆盖已有的防盗链配置。
添加或修改防盗链配置的命令格式和示例如下:
- 命令格式 - ossutil referer --method put oss://bucketname refererconfig [--disable-empty-referer]- 参数及选项说明如下: - 配置项 - 说明 - bucketname - 待添加或修改防盗链配置的Bucket名称。 - refererconfig - 填写域名或IP地址,支持通配符星号(*)和半角问号(?),多个Referer需以空格分隔。配置示例如下: - 配置为 - http://www.aliyun.com时,可匹配http://www.aliyun.com/123、http://www.aliyun.com.cn等以http://www.aliyun.com为前缀的地址。
- 配置为 - *www.aliyun.com,可匹配http://www.aliyun.com、https://www.aliyun.com等包含- www.aliyun.com的地址。
- 通配符星号(*)表示使用星号代替0个或多个字符。例如配置为 - *.aliyun.com,可匹配https://help.aliyun.com、https://www.aliyun.com等地址。
- 通配符半角问号(?)表示使用问号代替一个字符。 
- 支持带端口的域名或IP,例如https://www.example.com:8080、https://10.0.0.0:8080等地址。 
 - --disable-empty-referer - 选择是否允许空Referer。 - 不添加此选项时,表示允许空Referer,即HTTP或HTTPS Header中不带Referer字段或Referer字段为空。 
- 添加此选项后,表示不允许空Referer,即HTTP或HTTPS Header中带Referer字段且值不为空。 
 
- 使用示例 - 为目标存储空间examplebucket设置防盗链,允许域名为 - www.aliyun.com的网站引用OSS文件,不允许在浏览器中输入URL直接访问OSS文件。- ossutil referer --method put oss://examplebucket http://www.aliyun.com https://www.aliyun.com --disable-empty-referer- 为目标存储空间examplebucket设置防盗链,允许域名为 - www.aliyun.com的网站引用OSS文件,并且允许在浏览器中输入URL直接访问OSS文件。- ossutil referer --method put oss://examplebucket http://www.aliyun.com https://www.aliyun.com- 以下输出结果表明已成功添加防盗链配置。 - 0.134839(s) elapsed
查看防盗链配置
- 命令格式 - ossutil referer --method get oss://bucketname [local_xml_file]- 参数说明如下: - 参数 - 说明 - bucketname - 待获取防盗链配置的Bucket名称。 - local_xml_file - 存放防盗链配置的本地文件名称,例如 - localfile.txt。如果未指定此参数,则防盗链配置将直接输出到屏幕。
- 使用示例 - 获取存储空间examplebucket的防盗链配置,并将配置结果写入本地文件 - localfile.txt。- ossutil referer --method get oss://examplebucket localfile.txt- 以下输出结果表明已成功获取防盗链配置。 - 0.212407(s) elapsed
- 获取存储空间examplebucket的防盗链配置,并将配置结果直接输出屏幕。 - ossutil referer --method get oss://examplebucket- 以下输出结果表明examplebucket的防盗链配置中,仅HTTP或HTTPS Header中与 - *www.aliyun.com匹配的请求允许访问examplebucket,且不允许空Referer。- <?xml version="1.0" encoding="UTF-8"?> <RefererConfiguration> <AllowEmptyReferer>false</AllowEmptyReferer> <RefererList> <Referer>*www.aliyun.com</Referer> </RefererList> </RefererConfiguration> 0.080482(s) elapsed
 
删除防盗链配置
- 命令格式 - ossutil referer --method delete oss://bucketname- bucketname表示待删除防盗链配置的Bucket名称。 
- 使用示例 - 删除存储空间examplebucket的防盗链配置。 - ossutil referer --method delete oss://examplebucket- 以下输出结果表明已成功删除防盗链配置。 - 0.212409(s) elapsed
通用选项
当您需要通过命令行工具ossutil切换至另一个地域的Bucket时,可以通过-e选项指定该Bucket所属的Endpoint。当您需要通过命令行工具ossutil切换至另一个阿里云账号下的Bucket时,可以通过-i选项指定该账号的AccessKey ID,并通过-k选项指定该账号的AccessKey Secret。
例如您需要为另一个阿里云账号下,华东1(杭州)地域下名为testbucket的存储空间设置防盗链,命令如下:
ossutil referer --method put oss://testbucket www.alibabacloud.com -e oss-cn-hangzhou.aliyuncs.com -i yourAccessKeyID -k yourAccessKeySecret关于此命令的其他通用选项的更多信息,请参见通用选项。