Amazon S3 存储桶中缺少 Access-Control-Allow-Origin headers
Missing Access-Control-Allow-Origin headers from Amazon S3 bucket
我的 Amazon S3 存储桶具有以下 CORS 配置。问题是配置似乎完全被忽略了。从存储桶中请求 objects 时,我没有得到任何 Access-Control-Allow-Origin headers。是否或任何人有类似的问题或调试提示?
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://www.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://localhost:8100</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
这是我的存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example.com/*"
}
]}
我不确定您为什么要添加额外的 xml
信息,因为我在 S3 文档中没有看到这些信息。简单地说,这应该有效:
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>http://www.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://localhost:8100</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
您必须在请求中提供 Origin
header 才能在响应中获得 Access-Control-Allow-Origin header。
使用卷曲:
$ curl -XGET -H 'Origin: www.example.com' https://my-bucket.s3.amazonaws.com/doc/2006-03-01/
请注意——与文档相反——即使您没有在存储桶上启用 "Static Website Hosting",CORS 配置也会被接受。您可以通过存储桶子域(如上所述)或通过完整路径访问存储桶:https://s3.amazonaws.com/my-bucket/doc/2006-03-01
我的 Amazon S3 存储桶具有以下 CORS 配置。问题是配置似乎完全被忽略了。从存储桶中请求 objects 时,我没有得到任何 Access-Control-Allow-Origin headers。是否或任何人有类似的问题或调试提示?
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://www.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://localhost:8100</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
这是我的存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example.com/*"
}
]}
我不确定您为什么要添加额外的 xml
信息,因为我在 S3 文档中没有看到这些信息。简单地说,这应该有效:
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>http://www.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://localhost:8100</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
您必须在请求中提供 Origin
header 才能在响应中获得 Access-Control-Allow-Origin header。
使用卷曲:
$ curl -XGET -H 'Origin: www.example.com' https://my-bucket.s3.amazonaws.com/doc/2006-03-01/
请注意——与文档相反——即使您没有在存储桶上启用 "Static Website Hosting",CORS 配置也会被接受。您可以通过存储桶子域(如上所述)或通过完整路径访问存储桶:https://s3.amazonaws.com/my-bucket/doc/2006-03-01