【问题标题】:Serving Angular JS HTML templates from S3 and CloudFront - CORS problems从 S3 和 CloudFront 提供 Angular JS HTML 模板 - CORS 问题
【发布时间】:2013-03-07 11:54:48
【问题描述】:

我有一段时间尝试从 Amazon CloudFront 提供静态 HTML 模板。

我可以在 Firefox 上为我在 S3 上托管的 HTML 执行 jQuery.get 就好了。 CloudFront 同样返回一个OPTIONS 403 Forbidden。而且我无法在 Chrome 上为 S3 或 CloudFront 文件执行 ajax get。我认为 Angular 也有同样的问题。

我不知道它如何获取远程模板,但它返回的错误与jQuery.get 相同。根据亚马逊技术支持,我的 CORS 配置很好,正如我所说,我可以直接从 Firefox 上的 S3 获取文件,因此它适用于一种情况。

我的问题是,如何让它在所有浏览器、CloudFront 和 Angular templateUrl 中运行?

【问题讨论】:

标签: amazon-s3 angularjs jsonp cors amazon-cloudfront


【解决方案1】:

对于来自谷歌的人,更多

事实证明,当 CORS 设置位于 S3 存储桶上时,Amazon 实际上确实通过 SSL 支持 CORS。当云端缓存 CORS 响应的标头时,不好的部分就出现了。如果您从可能混合 http 和 https 的源中获取,您将遇到来自 CloudFront 的允许源会显示 http 但您想要 https 的情况。这当然会导致浏览器崩溃。更糟糕的是,如果您接受压缩内容,CloudFront 将缓存略有不同的版本。因此,如果您尝试使用 curl 进行调试,您会认为一切正常,然后发现它不在浏览器中(尝试将 --compressed 传递给 curl)。

一个无可否认的令人沮丧的解决方案就是放弃整个 CloudFront 并直接从 S3 存储桶提供服务。

【讨论】:

    【解决方案2】:

    亚马逊目前似乎不支持 CloudFront 或 S3 上的 SSL 和 CORS,这是问题的症结所在。 Limelight 或 Akamai 等其他 CDN 允许您将 SSL 证书添加到 CNAME 以规避该问题,但亚马逊不允许这样做,并且其他 CDN 成本过高。最好的选择似乎是从您自己的域上的服务器提供 html。这是 Angular 和 Rails 的解决方案:https://stackoverflow.com/a/12180837/256066

    【讨论】:

      猜你喜欢
      • 2017-12-30
      • 2014-09-03
      • 2020-12-14
      • 1970-01-01
      • 2014-06-16
      • 2020-02-20
      • 2015-12-12
      • 2018-05-15
      • 2015-06-20
      相关资源
      最近更新 更多