You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS S3桶Referer策略始终返回403问题求助

排查AWS S3桶Referer策略导致的403问题

我来帮你一步步排查这个403的问题,咱们从常见的坑开始梳理:

1. 先确认浏览器是否真的发送了Referer头

这是最容易忽略的关键点!很多浏览器隐私设置、插件或者页面场景会阻止发送Referer:

  • 打开浏览器开发者工具(按F12),切换到Network面板
  • 点击链接触发PNG请求,找到对应的请求项,查看Request Headers里的Referer字段
    • 如果没有这个字段,说明浏览器没发送Referer,策略自然会拒绝请求
    • 如果有这个字段,确认值是否匹配你策略里的规则(比如如果是https://blue.mywebsite.io/test.html,你的/*规则是可以匹配的)

2. 检查S3桶的「阻止公共访问」设置细节

你提到已经禁用了这个功能,但要确认四个子选项全部关闭:

  • 进入S3桶的「权限」标签页,找到「阻止公共访问(桶设置)」
  • 确保以下四个选项都是关闭状态:
    • 阻止所有公共访问
    • 阻止新的公共桶策略
    • 阻止公共和跨账户访问的桶策略
    • 限制公共桶策略

如果后两个选项处于开启状态,你的桶策略会被强制失效,哪怕语法完全正确也没用。

3. 验证桶策略的语法和匹配规则

虽然你的策略看起来没问题,但可以用AWS自带工具做个验证:

  • 在桶策略编辑页面,点击「验证策略」按钮,检查是否存在语法错误
  • 另外,注意StringLike是区分路径大小写的,不过你已经覆盖了http/https和www的情况,这部分应该没问题

如果想先快速测试策略是否生效,可以临时把Referer规则改得宽松一点:

"StringLike": {
  "aws:Referer": "*blue.mywebsite.io*"
}

测试能访问后,再逐步缩小到你需要的精确规则。

4. 用curl模拟请求排除浏览器干扰

用命令行直接模拟带Referer的请求,排除浏览器端的影响:

curl -v -H "Referer: https://blue.mywebsite.io/" https://mywebsiteso.s3.ap-south-1.amazonaws.com/403.PNG
  • 如果返回200,说明策略本身是有效的,问题出在浏览器端的Referer发送逻辑
  • 如果还是403,说明策略或者公共访问设置存在问题

5. 清除缓存或用无痕模式测试

浏览器可能缓存了之前的403响应,或者隐私模式下插件不会干扰Referer发送,试试用无痕窗口访问,看是否能正常加载资源。

其他可能的小细节

  • 对象ACL:虽然桶策略优先级高于对象ACL,但如果对象的ACL设置了完全私有,偶尔会出现冲突?不过一般桶策略允许访问的话就没问题,可以临时给对象加个「公共读」ACL测试(测试完记得改回私有)
  • 区域匹配:确认资源URL里的ap-south-1和桶实际所在区域一致,你的URL看起来是匹配的,这个大概率不是问题

内容的提问来源于stack exchange,提问作者Divyang Desai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 06:27:48