2017-08-06 61 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

建立新的设置后,创建一个对受影响的文件无效