我在S3 + Cloudfront +签名网址上遇到了CORS。
我的用例是:
第一个故事(成功):
我有一个带有Cloudfront的Amazon S3存储桶。 DOMAIN1/file
链接
我编写了一个简单的测试JS脚本来从DOMAIN1获取文件并将其放在DOMAIN2/test.html
第二种情况(也是成功的):
第三种情况(失败)
DOMAIN2/test.html
测试脚本No 'Access-Control-Allow-Origin' header
错误。因此,Cloudfront不会在限制分发的情况下发送标头。
CORS xml是:
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://*</AllowedOrigin>
<AllowedOrigin>https://*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>10</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
CloudFront / S3 / IAM设置中必定存在一些问题。我怎么解决它?
答案 0 :(得分:0)
似乎解决方案是设置对S3存储桶的正确访问权限。相反,&#34; Everyone&#34;访问,需要一个&#34;任何AWS认证用户&#34;或&#34; Cloudfront适当的用户&#34;。
答案 1 :(得分:0)
我去了Cloudfront Distributions -> MYPRIVATECLOUDFRONTID -> Behaviors
并添加了以下内容:
Path Pattern = path/to/my/file.ext
Forward Headers = Whitelist
并添加到Whitelist Header: Origin
请勿忘记取消选中Restrict Viewer Access (Use Signed URLs or
Signed Cookies)
选项 - 对我来说,即使我已将整个缓存标记为限制,也标记为不受限制。
我的下一步是根据需要自动设置此白名单。