2016-02-21 56 views
0

我在S3 + Cloudfront +簽名的Url上堅持使用CORS。AWS CloudFront訪問控制 - 允許來源和簽名Cookie/Url

我的使用情況是:

第一個故事(成功):

  1. 我有一個Amazon S3存儲用的Cloudfront。文件由DOMAIN1/file鏈接

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

  3. 我能夠得到文件成功訪問。 CORS很好

第二種情況(太成功):

  1. 我用標識的URL限制雲鋒分佈。
  2. 起初我試過的是在DOMAIN1 下訪問一個文件,沒有簽名。被拒絕訪問。沒關係,因爲請求沒有簽名。
  3. 我創建了一個簽名的URL,並且能夠成功下載該文件。

第三種情況(失敗)

  1. 我把標識的URL(從第二種情況)的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設置一些問題。我如何解決它?

+0

如果您可以從失敗的案例中捕獲請求和響應頭文件,那麼您將更容易理解您要報告的內容。 –

回答

0

看起來像一個解決方案是設置一個正確的S3存儲桶的訪問權限。相反,「所有人」訪問需要「任何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)選項 - 對我來說,它被標記爲不即使我限制已標記整個緩存被限制。

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