【问题标题】:S3 CORS errors never endS3 CORS 错误永无止境
【发布时间】:2018-07-07 08:26:03
【问题描述】:

我正在使用 S3 从 UI 上传图像。我有一个带有访问密钥 ID/秘密访问密钥的 AMI,它只允许 putObjectgetObject。所有putObject 都使用public-read acl 调用。

我在 S3 存储桶中有这个 CORS 配置:

<CORSConfiguration>
<CORSRule>
    <AllowedOrigin>https://foo.com</AllowedOrigin>
    <AllowedOrigin>http://localhost:5000</AllowedOrigin>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>

我不断收到这些 CORS 错误:

XMLHttpRequest 无法加载 https://foo.s3.amazonaws.com/items/images/e75768-2018-0-26/roar-bomber.png。 对预检请求的响应未通过访问控制检查:否 'Access-Control-Allow-Origin' 标头出现在请求的 资源。因此不允许使用原点“https://foo.com” 使用权。响应的 HTTP 状态代码为 403。

我显然允许正确的起源,所以我不知道为什么它一直对我大喊大叫。但更糟糕的是,它有时会起作用,然后即使没有任何改变也会再次停止工作......

使用 Chrome 浏览器。

【问题讨论】:

  • 您的配置中缺少 OPTION 方法。

标签: javascript amazon-web-services amazon-s3 cors


【解决方案1】:

更新

AWS 不允许将 OPTIONS 方法设置为允许的方法。 按照指南https://docs.aws.amazon.com/en_pv/AmazonS3/latest/dev/cors.html#how-do-i-enable-cors,检查AllowedMethod Element部分。


在您的 CORS 配置中添加 OPTIONS 方法。

预检请求使用 OPTION 方法检查 CORS 允许使用哪些方法。

https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request

【讨论】:

  • OPTIONS 在 S3 CORS 配置中不允许。收到此错误:Found unsupported HTTP method in CORS config. Unsupported method is OPTIONS。可以肯定的是,亚马逊自己会处理这个问题,因为他们希望完全控制它,我们只提供面向公众的 CORS 选项。
  • 哦。我在文档上找到了这个:For a preflight request, if the request includes an Access-Control-Request-Headers header, verify that the CORSRule includes the AllowedHeader entries for each value in the Access-Control-Request-Headers header.
  • 是的,你是对的,对于 CORS 设置,需要一个预检 OPTIONS 端点,但是对于 AWS S3,它们自己处理预检。不过谢谢! :)
  • 可能在第二条规则中,需要添加&lt;AllowedHeader&gt;*&lt;/AllowedHeader&gt;
  • @Lansana 分享一下怎么样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
  • 2021-08-26
相关资源
最近更新 更多