【问题标题】:Cloudfront CORS only works for subdomainCloudfront CORS 仅适用于子域
【发布时间】:2018-01-13 15:36:34
【问题描述】:

我对使用 Cloudfront + S3 的 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

两者都按预期返回值:

访问控制允许来源:https://musicjungle.com.br

Access-Control-Allow-Methods: GET Access-Control-Expose-Headers: ETag

访问控制最大年龄:3000 访问控制允许凭据:真

变化:来源、访问控制请求标头,

访问控制请求方法

但是当我尝试使用 Cloudfront URL 运行相同的 curl 时,只有 www 子域有效

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”。

【问题讨论】:

    标签: nginx amazon-s3 cors cdn


    【解决方案1】:

    如果我理解正确,我会说这是 CloudFront 的请求标头缓存设置的问题......

    默认情况下,CloudFront 在边缘站点缓存对象时不考虑标头。如果您的源返回两个对象,并且它们仅在请求标头中的值不同,则 CloudFront 仅缓存该对象的一个​​版本。

    ——Source.

    因此,转到您的 Distribution 并编辑您的 Behavior 以允许 CloudFront 根据 Origin 标头的值缓存对象:

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

    【讨论】:

    • 关于创建失效以破坏缓存的重要提示
    猜你喜欢
    • 2018-08-10
    • 2020-11-11
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 2016-05-12
    • 2021-05-16
    • 2020-01-07
    • 1970-01-01
    相关资源
    最近更新 更多