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

通过S3控制台上传至深度归档时遇options request denied upload错误如何排查修复

我之前帮团队排查过好几起S3控制台上传时的OPTIONS请求被拒问题,结合你用Safari上传到深度归档存储类的场景,给你整理了一套逐步排查的方案:

排查与修复方案

1. 先检查S3桶的CORS配置(最常见原因)

浏览器发起的OPTIONS预检请求是跨域上传的关键环节,S3桶的CORS规则如果不匹配,直接会导致请求被拒。

  • 登录S3控制台,找到目标桶,进入「权限」标签页的「跨域资源共享(CORS)」
  • 确保你的CORS规则包含以下核心配置(可以根据实际环境调整,但至少覆盖这些项):
[
    {
        "AllowedHeaders": ["*"],
        "AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
        "AllowedOrigins": ["https://s3.console.aws.amazon.com"],
        "ExposeHeaders": ["ETag"]
    }
]

注意:如果你的S3控制台是区域专属域名(比如https://s3-us-east-1.console.aws.amazon.com),要把AllowedOrigins改成对应的域名;另外,浏览器的OPTIONS预检请求会被AWS自动处理,但确保AllowedMethods覆盖你实际用到的上传操作(PUT/POST)。

2. 验证IAM身份的权限配置

上传到深度归档存储类需要额外的权限匹配,别忽略这一点:

  • 检查你当前使用的IAM用户/控制台角色的权限策略,确认包含针对DEEP_ARCHIVE存储类的上传权限:
{
    "Effect": "Allow",
    "Action": "s3:PutObject",
    "Resource": "arn:aws:s3:::你的桶名/*",
    "Condition": {
        "StringEquals": {
            "s3:x-amz-storage-class": "DEEP_ARCHIVE"
        }
    }
}

如果你不想限制存储类,也可以直接允许s3:PutObject到目标桶(去掉Condition部分),避免因为存储类条件不匹配导致拒绝。另外,别忘了确保IAM身份有s3:ListBucket权限,控制台需要这个权限来确认上传结果。

3. 调整Safari的安全设置(针对性排查)

Safari的跨域安全策略比其他浏览器更严格,可能会拦截合法的预检请求:

  • 打开Safari偏好设置 → 「隐私」,临时取消勾选「阻止跨站跟踪」,重启浏览器后再尝试上传
  • 或者开启开发菜单(偏好设置→高级→勾选「显示开发菜单」),然后在开发菜单中选择「禁用跨域限制」(仅用于测试,不要长期开启),如果测试上传成功,说明是Safari的跨域策略导致的问题,需要回到CORS配置确保规则完全正确。

4. 重置控制台会话权限

有时候AWS控制台的临时会话会出现权限异常,试试这个简单的方法:

  • 退出AWS控制台,清除浏览器中AWS相关的Cookie和缓存,然后重新登录账号,再尝试上传操作

5. 检查桶的其他限制规则

  • 确认桶的「阻止公共访问」设置没有过度限制(正常来说,控制台上传依赖IAM权限,阻止公共访问不影响内部操作,但如果有特殊配置可能会冲突)
  • 检查桶策略是否存在拒绝OPTIONS请求的规则,比如有些桶策略会限制特定IP或Origin,这时候需要调整策略允许S3控制台的Origin和OPTIONS方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:59:07