簡體   English   中英

AWS CloudFront訪問控制允許來源和簽名Cookie /網址

[英]AWS CloudFront Access-Control-Allow-Origin and Signed Cookie/Urls

我在S3 + Cloudfront + Signed Urls遇到了CORS。

我的用例是:

第一個故事(成功):

  1. 我有一個帶Cloudfront的Amazon S3存儲桶。 可以通過DOMAIN1/file鏈接訪問DOMAIN1/file

  2. 我編寫了一個簡單的測試JS腳本來從DOMAIN1中獲取文件,並將其放在DOMAIN2/test.html

  3. 我能夠成功獲取文件。 CORS很好

第二種情況(也成功):

  1. 我通過使用簽名網址來限制Cloud Front分發。
  2. 最初,我嘗試的是訪問DOMAIN1上沒有簽名的文件。 得到了拒絕訪問。 沒關系,因為請求未簽名。
  3. 我已經創建了一個簽名的URL,並且能夠成功下載文件。

第三種情況(失敗)

  1. 我將簽名的URL(從DOMAIN2/test.html情況開始)放到DOMAIN2/test.html測試腳本中
  2. 並始終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設置中一定有問題。 我該如何解決?

似乎一種解決方案是為S3存儲桶設置正確的訪問權限。 取而代之的是“所有人”訪問,需要“任何經AWS身份驗證的用戶”或“適合Cloudfront的用戶”。

我去了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) -對我來說,即使我已將整個緩存標記為受限,它也被標記為不受限。

我的下一步是根據需要自動設置此白名單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM