ruby-on-rails-4 - asset_host和相对协议url被更改为 http

  显示原文与译文双语对照的内容

application ( Rails 4.0.0 ) 应用程序的某些元素可以通过 http://和 https://连接获得,因此我配置了 asset_host,使用 relative 协议 url (//),,它应该允许浏览器将它的希望访问的资源添加到协议中。


config.action_controller.asset_host ="//assets%d.mydomain.com"

尽管我的应用程序几乎所有的应用程序都很好,但是我有一种特殊情况,即 Rails 似乎使用 http://而不是 relative 协议 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');
. . .

包含经过编译的CSS的链接标记使用我的relative 协议URL期待:


 <link href="//assets0.mydomain.com/assets/public/application-2c651fbc049aa23457c551d71e475420.css" media="all" rel="stylesheet"/>

然而,对字体的引用已经从 relative 协议URL转换到被编译的CSS> 中的http


@font-face {
 font-family:'OpenSansLight';
 src:url(http://assets0.mydomain.com/assets/opensans/OpenSans-Light-webfont-7f46c9d03142a572bb5969aa55dc54de.eot)

这会导致浏览器内的不安全内容警告,导致 IE 根本不加载字体,和 Chrome 和to显示警告。

我无法解释为什么会发生这种情况。 任何建议都会被接受。

时间: 作者:

在部署过程中,O.k的编译失败,使用了一个旧版本的资产,使用http值进行了硬编码。

因此,这个服务被服务而不是包含我的相对协议URL的那个。

强制资产重新编译并确保它们成功完成后,就像我预期的那样。

作者:
...