【问题标题】:Unable to update AWS S3 CORS POLICY无法更新 AWS S3 CORS 政策
【发布时间】:2021-02-11 13:15:00
【问题描述】:

我需要更改我的 AWS S3 存储桶 CORS 策略以启用将我的 ReactJS 的文件上传到 AWS S3,但我不断收到此 API 响应:

预期 params.CORSConfiguration.CORSRules 是一个数组。

我现在很茫然。有人可以帮忙吗?

【问题讨论】:

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


    【解决方案1】:

    我不确定这是否有帮助。我最近遇到了同样的问题,AWS 似乎对我们定义 CORS 配置的方式进行了一些更改。例如,如果您想在过去允许 S3 存储桶上的某些方法,您必须在编辑器上执行以下操作:

    <CORSConfiguration>
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>HEAD</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    

    下面的配置等同于上面的配置,但采用数组的形式。

    [
        {
            "AllowedHeaders": [
                "*"
            ],
            "AllowedMethods": [
                "GET",
                "PUT",
                "POST",
                "HEAD",
                "DELETE"
            ],
            "AllowedOrigins": [
                "*"
            ],
            "ExposeHeaders": [],
            "MaxAgeSeconds": 3000
        }
    ]
    

    如果这有帮助,请告诉我。谢谢!

    【讨论】:

    • 有用的答案。如果您附上一个解释“AWS 似乎做了一些更改”的链接,将会更有帮助
    • 它不起作用。我收到未知错误发生意外错误。 API 响应策略必须是有效的 JSON,并且第一个字节必须是 '{'
    • 它代替了其他人提到的 XML 样式的版本
    【解决方案2】:

    我们遇到了同样的错误。我们需要两个修复。 (不确定这对您的情况是否有帮助):

    1. 注意使用的引号类型:“”与“”。使用前者
    2. 确保括号后面的倒数第二行没有尾随逗号。

    【讨论】:

      【解决方案3】:

      要为您的静态网站配置 CORS,CORS 对象必须采用 JSON 格式 see aws docs cors configuration。要指定要启用 CORS 的存储桶上允许的操作,您必须定义一组 CORS 规则。 CORS 规则是一个数组,其中包含一组对象,其中每个对象对应于特定规则。要了解有关如何定义 CORS 规则的更多信息see aws cors rule。您收到的错误是由于您的 CORS 规则格式不正确。如果您按照@FaitAccompli 的上述示例进行操作,则错误应该得到解决。

      【讨论】:

        【解决方案4】:
        [{
            "AllowedHeaders": [
                "*"
            ],
            "AllowedMethods": [
                "GET",
                "PUT",
                "POST",
                "HEAD",
                "DELETE"
            ],
            "AllowedOrigins": [
                "*"
            ],
            "ExposeHeaders": [],
            "MaxAgeSeconds": 3000
        }]
        

        这对我有用。这需要在 AWS S3“跨域资源共享 (CORS)”部分添加。

        这有帮助。

        【讨论】:

          猜你喜欢
          • 2020-05-24
          • 1970-01-01
          • 2021-02-13
          • 2021-04-27
          • 2014-05-03
          • 1970-01-01
          • 2021-02-13
          • 2020-12-23
          • 1970-01-01
          相关资源
          最近更新 更多