ruby-on-rails - Cloudfront CORS 问题在 Rails 应用程序上提供字体

标签 ruby-on-rails heroku fonts cors amazon-cloudfront

访问我的网站时,我不断从控制台收到此错误消息:

font from origin 'https://xxx.cloudfront.net' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.example.com' is therefore not allowed access.

我已经尝试了一切:
  • 我已经安装了font_assets gem
  • 配置了application.rb文件
    config.font_assets.origin = 'http://example.com'
    
  • Cloudfront 上的白名单 header ,如 this article 中所述到
    Access-Control-Allow-Origin
    Access-Control-Allow-Methods
    Access-Control-Allow-Headers
    Access-Control-Max-Age
    

  • 但是什么都没有,零,nada。

    我在 Heroku 上使用 Rails 4.1。

    最佳答案

    从 5.0 版开始,Rails 允许为 Assets 设置自定义 HTTP header ,您不必使用 rack-cors 或 font-assets gem。要为 Assets (包括字体)设置 Access-Control-Allow-Origin,只需将以下代码添加到 config/environments/production.rb:

    config.public_file_server.headers = {
      'Access-Control-Allow-Origin' => '*'
    }
    

    header 值也可以是特定域,如下所示:
    config.public_file_server.headers = {
      'Access-Control-Allow-Origin' => 'https://www.example.org'
    }
    

    这适用于我的应用程序,我不需要更改 Cloudfront 上的任何设置。

    关于ruby-on-rails - Cloudfront CORS 问题在 Rails 应用程序上提供字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32592571/

    相关文章:

    javascript - 在 rails 中使用 kaminari 进行无休止的滚动,如何渲染?

    ruby-on-rails - 如何在 Rails 中添加禁用的提交按钮

    heroku - 玩!在 Heroku 上使用 Drools 的框架 [1.2.4]

    css - wordpress 中的字体与 google 字体中的字体看起来不同

    ruby-on-rails - Rails 3.2.2 和 Rocket_tag 没有这样的列

    jquery - Rack 抛出 EOFError(错误的内容正文)

    python - Heroku 'DATABASES' 未定义

    java - JSTL URL 标签在 Heroku 上不起作用

    html - 哪种字体嵌入技术可以抑制抗锯齿?

    c# - C#中的FNT字体文件