Amazon S3,无法设置 CORS 策略

Posted

技术标签:

【中文标题】Amazon S3,无法设置 CORS 策略【英文标题】:Amazon S3, impossible to set CORS Policy 【发布时间】:2021-02-13 08:41:11 【问题描述】:

我需要设置一个 S3 存储桶来为我的 Django 静态文件提供服务,当我尝试添加 CORS 策略时,我得到了以下结果:

Expected params.CORSConfiguration.CORSRules to be an Array 

我首先尝试了这个策略:

<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>http://www.example.com</AllowedOrigin>
   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>
   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
 </CORSRule>
</CORSConfiguration>

经过一番搜索,我发现亚马逊已将格式更改为 JSON (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html#how-do-i-enable-cors)。

所以我尝试了他们的 JSON 示例:


  "CORSConfiguration":
    "CORSRule":[
      
        "AllowedOrigin":[
          "http://www.example.fr"
        ],
        "AllowedMethod":[
          "PUT",
          "POST",
          "DELETE"
        ],
        "AllowedHeader":[
          "*"
        ]
      ,
      
        "AllowedOrigin":[
          "*"
        ],
        "AllowedMethod":[
          "GET"
        ]
      
    ]
  

我得到了完全相同的错误。

于是我在***上搜索并看到了这个帖子:Unable to update AWS S3 CORS POLICY

我尝试了给定的语法,但没有成功:/

如果有人有想法,那就太好了:)

【问题讨论】:

【参考方案1】:

这是一个有效的例子:

[
    
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "http://www.example.com"
        ],
        "ExposeHeaders": []
    ,
    
        "AllowedHeaders": [],
        "AllowedMethods": [
            "GET"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    
]

请注意,不再需要 CORS XML 标记(它们是隐含的),单数名词似乎已变为复数,例如“AllowedMethod”变成了“AllowedMethods”,因为在 XML 中每个标签代表一个实体,而在 JSON 中它代表多个。因此,在语言上是可防御的,但不能向后兼容。

【讨论】:

以上是关于Amazon S3,无法设置 CORS 策略的主要内容,如果未能解决你的问题,请参考以下文章

我们如何为 Amazon S3 存储桶中的文件夹设置 CORS

Amazon S3是否需要时间来更新CORS设置?多久?

正确上传到 Amazon S3 的权限

如何在 Amazon S3 中配置 CORS 策略以从 React App 上传文档?

被 CORS 策略阻止:从 Amazon S3 调用图像时没有“Access-Control-Allow-Origin”标头

如何为 IP 地址设置 Amazon S3 策略