S3 CORS配置被公共访问设置取代了吗?

时间:2019-06-04 19:45:42

标签: amazon-s3 cors

对于一个小型测试Web应用程序,我早些时候尝试在S3存储桶上设置CORS配置。我没有设置以下ACL和公共访问权限:

S3 block public access screen

(除了最后一个选项,所有选项都已选中)在我设置了以下策略之后:

{
    "Version": "2012-10-17",
    "Id": "Policy1559671538244",
    "Statement": [
        {
            "Sid": "Stmt1559671517813",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::somename/*"
        }
    ]
}

对S3的访问正常,我的本地浏览器可以访问所有上载的资产。但是,然后我需要为特定页面激活CORS,并添加了以下CORS配置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>

我反复遇到错误No 'Access-Control-Allow-Origin' header is present on the requested resource.,直到我停用了所有阻止公共访问选项,该错误才起作用。这是出乎意料的。现在,我重新激活了相关的“阻止”公共访问选项,它似乎仍然可以正常工作。这使我相信S3会将CORS配置解释为新的公共存储桶策略或ACL。因此,阻止公共访问设置也将取代CORS配置。我没有在文档中看到此内容。有人知道更多吗?

1 个答案:

答案 0 :(得分:0)

我发现https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

The request method (for example, GET or PUT) or the Access-Control-Request-Method
header in case the of a preflight OPTIONS request must be one of the AllowedMethod
elements.

可以尝试添加

<AllowedMethod>Access-Control-Request-Method</AllowedMethod>