【发布时间】:2014-01-16 11:20:45
【问题描述】:
我的应用程序 (Rails 4.0.0) 的某些元素可通过 http:// 和 https:// 连接使用,因此我已将资产主机配置为使用相对协议 url (//),这应该允许浏览器切换到它希望从中获取资源的协议。
config.action_controller.asset_host = "//assets%d.mydomain.com"
这在我几乎所有的应用程序中都非常有效,但是我有一个特殊的情况,Rails 似乎使用 http:// 而不是相对协议 url // 输出主机。
这似乎只发生在我的生产环境中,并且仅在从我的 LESS/CSS 文件中引用资产时发生,而不是在使用 stylesheet_link_tag 包含文件本身时发生。
我在视图中按如下方式引用我的 SASS 文件:
<%= stylesheet_link_tag "public/application", :media => "all" %>
在我的 SASS 中,我引用了如下字体:
@font-face {
font-family: 'OpenSansLight';
src: font-url('opensans/OpenSans-Light-webfont.eot');
...
使用我漂亮的相对协议 URL,包含已编译 CSS 的链接标记看起来与预期一样:
<link href="//assets0.mydomain.com/assets/public/application-2c651fbc049aa23457c551d71e475420.css" media="all" rel="stylesheet" />
但是,在编译的 CSS 中,对字体的引用已从相对协议 URL 更改为 http>
@font-face {
font-family:'OpenSansLight';
src:url(http://assets0.mydomain.com/assets/opensans/OpenSans-Light-webfont-7f46c9d03142a572bb5969aa55dc54de.eot)
这会导致浏览器中出现不安全的内容警告,导致 IE 根本不加载字体,Chrome 和 FF 等会向用户显示警告。
我想不出任何解释为什么会发生这种情况。任何建议都会被广泛接受。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 asset-pipeline