2017-08-06 59 views
1

我與使用的Cloudfront + S3的Cloudfront CORS僅適用於子域

CORS當我運行

curl -I -s -X GET -H "Origin: https://myapp.com" https://s3.amazonaws.com/myapp/assets/fontawesome-webfont.woff | grep Access 

curl -I -s -X GET -H "Origin: https://**www.**myapp.com" https://s3.amazonaws.com/myapp/assets/fontawesome-webfont.woff | grep Access 

兩個很奇怪的行爲返回值預計:

Access-Control-Allow-O rigin:https://musicjungle.com.br

訪問控制允許的方法:GET訪問控制展露報頭:ETag的

訪問控制 - 最大 - 年齡:3000訪問控制允許的憑據:真

各不相同:原產地,訪問控制請求報頭,

訪問控制請求法

但是,當我嘗試使用的Cloudfront URL運行相同的捲曲,就在WWW subdo主要作品

curl -I -s -X GET -H "Origin: https://www.myapp.com" https://d1bfllp5zjnl7u.cloudfront.net/assets/fontawesome-webfont.woff | grep Access 

訪問控制允許來源:https://www.musicjungle.com.br

訪問控制允許的方法:GET,PUT,POST,DELETE,HEAD

訪問控制 - 最大 - 年齡:3000訪問控制允許的憑據:真

下面的命令不會返回頭如預期

curl -I -s -X GET -H "Origin: https://myapp.com" https://d1bfllp5zjnl7u.cloudfront.net/assets/fontawesome-webfont.woff | grep Access 

任何意識爲什麼會發生這種情況?我已經在S3 CORS配置上允許兩臺服務器的Origin(如我們上面所見),但它似乎是Cloudfront配置中的一些,只允許「www.myapp.com」。

回答

0

如果我理解你的權利,我會說這是的CloudFront的的請求頭緩存設置的事......

默認情況下,CloudFront的在邊緣位置的緩存對象時不考慮頭。如果您的原點返回兩個對象,並且它們僅與請求標頭中的值不同,則CloudFront只緩存該對象的一個​​版本。

- Source

所以,去你分佈和編輯行爲允許CloudFront的基於該Origin頭的值緩存中的對象:

CF Headers Cache Configuration

建立新的設置後,創建一個對受影響的文件無效