为防止OSS文件被其他人盗链而产生额外的流量费用,您配置了Referer防盗链来阻止其他网站引用OSS文件,然而进行测试时,您发现防盗链并没有生效或者效果不符合预期。本文介绍OSS防盗链的常见问题以及排查方法。
配置了防盗链,但没有生效?
如果您为OSS配置了Referer防盗链,但测试防盗链没有生效,请排查您的浏览器、OSS、CDN设置。
排查项目 | 错误原因 | 解决办法 |
浏览器 | Referer字段的值被修改或设定为特定的值。在某些特定的浏览器环境下,如微信小程序、iframe等,Referer字段的值可能会被修改或设定为特定的值。 | 通过OSS日志或浏览器的开发者工具查询请求的实际的Referer的值,然后重新配置。具体操作,请参见查看来自其他网站的OSS请求的Referer。 |
OSS | 填写的Referer不规范。如果您填写的Referer不规范,则OSS无法正确匹配请求。例如,来自浏览器的请求的Referer一般会带 | 按照OSS的Referer规范填写。具体规范,请参见Referer配置规范。 |
CDN | CDN没有配置Referer防盗链。使用CDN加速OSS,没有在CDN配置Referer防盗链,导致通过CDN加速域名访问OSS文件时,CDN提供了缓存的文件而不进行防盗链验证。例如,第一次CDN请求时带了Referer,因此回源OSS返回正常的文件,并且CDN对文件进行了缓存,后续即使请求不带Referer,CDN也会响应正常的文件。 | 如果您使用了CDN加速OSS,请在CDN上完成与OSS上一样的防盗链配置。具体操作,请参见配置Referer防盗链。 |
微信小程序环境下访问OSS文件,报错You are denied by bucket referer policy?
在微信小程序中访问网页的文件时,由微信小程序发出的请求的Referer头部通常会被设置为微信小程序自身的域名,而不是用户正在访问的网页的域名。这是因为微信小程序的网络请求是在微信的客户端环境中执行的,而不是在传统的网页浏览器中。为了允许用户在微信小程序中访问网页中引用的OSS文件,您需要在白名单Referer中添加一条*servicewechat.com
,以确保来自微信小程序的请求不会被Referer防盗链策略所阻止。
在浏览器中输入URL访问OSS文件,报错You are denied by bucket referer policy?
您访问的OSS文件所在的Bucket被设置了不允许Referer为空,而在浏览器中输入URL访问OSS文件时Referer为空,因此您的请求被拒绝。如需在浏览器中输入URL访问OSS文件,您需要将Bucket设置为允许Referer为空。
输入Referer名单时,报错InlineDataTooLarge
您的防盗链Referer名单超过了20 KB大小上限,请减少名单中的条目以满足限制要求。