ruby-on-rails - 用于 AngularJS HTML 模板的 Rails + AWS CloudFront + CORS

标签 ruby-on-rails cors amazon-cloudfront

我正在部署一个使用 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 问题:

Chrome Dev Tools console output

任何想法将不胜感激!

更新 4/30:

我终于能够让我的 Rails 服务器使用 rack-cors gem 在 Assets 上设置正确的“Access-Control-Allow-Origin” header 按照 this Github issue 中的说明进行操作.现在当我运行时 curl要从 CloudFront 获取文件,我会看到正确的 header 。但是,当我运行 curl 时发送 OPTIONS请求,我仍然收到 403 Forbidden。查看下面的两个屏幕截图:

Assets 的 GET 请求看起来不错:

Curl GET Request

但是 OPTIONS 请求没有....

Curl GET Request

最佳答案

您需要在您的云前端缓存行为上启用 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/

相关文章:

ruby-on-rails - 无法禁用 devise-auth-token 中的电子邮件验证

ruby-on-rails - 如何使用 Ruby 将 csv 文件的内容写入电子邮件?

youtube-api - 上传到 YouTube API 时缺少“Access-Control-Allow-Origin”

spring-mvc - 即使定义了 CORS 映射,Google Tag Manager 403 的每个请求也是如此

amazon-web-services - AWS Cloudfront 分布不显示 API 网关分布

ruby-on-rails - 重定向后的验证消息

cors - 我的 CSS 无法加载位于其他 https+auth 服务器上的 web 字体 woff 文件(与 CORS 相关)

django - S3 中的图像存储和安全服务

amazon-web-services - 如何将多个域名路由到同一个 amazon S3 存储桶位置?

ruby-on-rails - Before_create 不起作用