首页 文章

AWS CloudFront Access-Control-Allow-Origin和签名Cookie / URL

提问于
浏览
0

我在S3 Cloudfront Signed Urls上遇到了CORS .

我的用例是:

第一个故事(成功):

  • 我有一个带有Cloudfront的Amazon S3存储桶 . DOMAIN1/file 链接可以访问文件

  • 我编写了一个简单的测试JS脚本来从DOMAIN1获取文件并将其放在 DOMAIN2/test.html

  • 我能够成功获取文件 . CORS is fine .

第二种情况(成功):

  • 我使用签名网址限制Cloud Front分发 .

  • 起初我尝试过访问DOMAIN1 without Signature上的文件 . 拒绝访问 . 没关系,因为请求没有签名 .

  • 我已成功创建了一个已签名的URL和 able to download 文件 .

第三种情况(失败)

  • 我将签名的URL(从第二个案例)放到 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设置中的某些问题 . 我该怎么办呢?

2 回答

  • 0

    似乎解决方案是设置对S3存储桶的正确访问权限 . 相反,“Everyone”访问需要“任何AWS身份验证用户”或“适合Cloudfront的用户” .

  • 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) 选项 - 对我来说,它被标记为不受限制,即使我已将整个缓存标记为限制 .

    我的下一步是根据需要自动设置此白名单 .

相关问题