Amazon S3,无法设置 CORS 策略

Slo*_*lot 3 amazon-s3 amazon-web-services cors

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

Expected params.CORSConfiguration.CORSRules to be an Array 
Run Code Online (Sandbox Code Playgroud)

我首先尝试了这个政策:

<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>
Run Code Online (Sandbox Code Playgroud)

经过一番搜索,我看到亚马逊已将格式更改为 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"
        ]
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

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

所以我在 stackoverflow 上搜索并看到了这个线程:无法更新 AWS S3 CORS 策略

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

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

jar*_*mod 8

这是一个有效的例子:

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "http://www.example.com"
        ],
        "ExposeHeaders": []
    },
    {
        "AllowedHeaders": [],
        "AllowedMethods": [
            "GET"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]
Run Code Online (Sandbox Code Playgroud)

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