对于一个小型测试Web应用程序,我早些时候尝试在S3存储桶上设置CORS配置。我没有设置以下ACL和公共访问权限:
(除了最后一个选项,所有选项都已选中)在我设置了以下策略之后:
{
"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配置。我没有在文档中看到此内容。有人知道更多吗?
答案 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>