设置OSS防盗链后访问OSS资源出现“You are denied by bucket referer policy”错误
问题描述
为避免阿里云OSS资源被其他人盗用,在设置OSS防盗链后,访问Bucket某个资源URL的时,访问出现以下报错。
<Code>AccessDenied</Code> <Message>You are denied by bucket referer policy.</Message>
问题原因
报错原因是该Bucket设置了防盗链,而请求该URL的时候携带的Referer不符合防盗链的设置,可能的原因如下:
- Referer为空,请求Header中没有Referer字段或者Referer字段为空。
- Referer不在规定的Referer范围内或者格式错误。
解决方案
Referer报错一般是站点类应用,设置防盗链后访问出错时,可根据执行以下相应的操作进行排查:
- 建议您清空浏览器缓存后,根据访问端的不同进行调试,分析具体报错的原因。
- 如果是PC端,可以在浏览器中可以查看Header的Referer。如Chrome浏览器,按键盘
F12
打开开发者工具,在Network中查看具体请求携带的Referer。 - 如果是移动端的访问,则需要借助于PC热点。移动端访问的方式可使用winshark或者是fidder进行抓包,分析具体请求URL中Request的Headers中携带的Referer,目前移动端访问页面可能存在某些浏览器强制设置Referer为空的情况,也就会出现PC端访问正常,而移动端无法访问的情况,需要具体抓包分析。
- 如果是PC端,可以在浏览器中可以查看Header的Referer。如Chrome浏览器,按键盘
- 根据分析结果,执行以下操作进行处理:
- Referer为空,请求Header中没有Referer字段或者Referer字段为空时,请参见设置防盗链进行配置。
- Referer不在规定范围或者格式错误时,需要注意以下几点:
- 确认是
http://
还是https://
配置。 a.example.com
和b.example.com
,匹配于http://*.example.com
或http://?.example.com
。example.com
匹配于http://example.com
,而不是http://*.example.com
。-
Referer格式错误,Referer配置必须带
http://
或者https://
,否则无效,如b.example.com
是无效配置。
- 确认是
- 执行完成以下操作后如果问题还是存在,请参见OSS防盗链配置及常见错误排查方法,进一步排查。
适用于
-
对象存储OSS