我正在部署一个使用 AngularJS 作为前端 MVC 框架的 Rails 4 应用程序,我想通过 CDN 部署我们的 Assets 。后 running into issues在调用 asset_path
时获取正确指纹的 URL在我的 AngularJS 路由 javascript 文件中,我决定消除 AssetSync gem 。为了替换 AssetSync,我想简单地在我的 Rails 服务器之上使用 Amazon CloudFront,为其自己的静态 Assets 提供服务。这对我的 CSS 和 JS 文件很有用,但不幸的是,当我尝试将 Angular 的 HTML 模板作为 Assets 提供时遇到了 CORS 问题:
任何想法将不胜感激!
更新 4/30:
我终于能够让我的 Rails 服务器使用 rack-cors gem 在 Assets 上设置正确的“Access-Control-Allow-Origin” header 按照 this Github issue 中的说明进行操作.现在当我运行时 curl
要从 CloudFront 获取文件,我会看到正确的 header 。但是,当我运行 curl
时发送 OPTIONS
请求,我仍然收到 403 Forbidden。查看下面的两个屏幕截图:
Assets 的 GET 请求看起来不错:
但是 OPTIONS 请求没有....
最佳答案
您需要在您的云前端缓存行为上启用 OPTIONS 的使用。
您可以在控制台中通过选择您的发行版并转到行为选项卡来执行此操作。
编辑默认缓存行为并启用扩展动词支持:
Allowed HTTP Methods
GET, HEAD, PUT, POST, PATCH, DELETE, OPTIONS
关于ruby-on-rails - 用于 AngularJS HTML 模板的 Rails + AWS CloudFront + CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23377343/