【问题标题】:difficulty with CORS on an "alternate" domain name在“备用”域名上使用 CORS 的困难
【发布时间】:2016-09-02 18:21:43
【问题描述】:

我有一个指向 S3 存储桶作为 CDN 的 Amazon CloudFront 设置。我还有一个指向此 CloudFront 的备用域名(不在 Route53 上)。

在使用备用域名时,我一直无法让脚本通过 CDN 提取 - 但如果我使用 CloudFront 控制面板中的本机域名,它就可以工作。

除了将域名 CNAME 设置为指向亚马逊 CloudFront 地址以使 CORS 工作之外,我还需要做些什么特别的事情吗?

【问题讨论】:

  • 我在设置 Cloud Front 时要求我添加的位置添加了域的 URL。还有其他地方需要设置吗?
  • 您能否使用备用主机名直接从 CloudFront 下载?您遇到的问题是否仅针对跨域请求?您是否尝试过使用curl 模拟跨域请求?
  • 然后它才开始正常工作..没有明确的原因。不知从何而来。
  • 是的,我可以直接从云端下载。

标签: amazon-web-services


【解决方案1】:

正确缓存 Web 请求的一个重要部分是确保从缓存中提供的响应是“正确的”,即它是否与源生成的响应匹配,对于相同的请求。

这并不像听起来那么简单,因为如果某些请求标头,响应可能会因内容而异。

CloudFront 采用保守且安全的方法,在将请求转发到源服务器时剥离大多数请求标头 - 如果服务器看不到标头,则无法使用标头更改其响应。

对于 CORS,源服务器必须看到 Origin:Access-Control-Request-Headers:Access-Control-Request-Method: 标头,以便它能够做出相应的响应。

但是将不必要的标头转发到源服务器会导致缓存效率低下,因为缓存的响应只会针对相同的未来请求提供服务,包括转发的标头在内。

因此,三个 CORS 请求标头必须在 CloudFront 缓存行为中“列入白名单”,以便将它们转发到源服务器(在本例中为 S3)。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-cors

【讨论】:

  • 感谢您对我的耐心等待。确实,问题源于我自己的不足以及未能非常非常彻底地阅读文档
猜你喜欢
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
相关资源
最近更新 更多