1

我花了很长时间尝试从 Amazon CloudFront 提供静态 HTML 模板。

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

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

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

4

2 回答 2

1

对于来自谷歌的人来说,多一点

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

一,无可否认,解决方案只是放弃整个 CloudFront 并直接从 S3 存储桶提供服务。

于 2013-10-30T21:09:18.720 回答
0

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

于 2013-03-25T21:27:21.093 回答