我的应用程序(4.0.0的Rails)的某些元素都可以通过同时加入http://和https://连接,所以我已经配置我asset_host使用相对协议网址(//),它应该允许浏览器切换到它希望从中获取资源的协议。asset_host和相对协议网址到http
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');
...
link标签,其中包括编译CSS看起来如预期使用我的不错的相对协议网址:
<link href="//assets0.mydomain.com/assets/public/application-2c651fbc049aa23457c551d71e475420.css" media="all" rel="stylesheet" />
但是对字体的引用有b EEN从相对协议的URL已编译的CSS内切换到http>
@font-face {
font-family:'OpenSansLight';
src:url(http://assets0.mydomain.com/assets/opensans/OpenSans-Light-webfont-7f46c9d03142a572bb5969aa55dc54de.eot)
这是在浏览器内造成不安全的内容的警告,使得IE完全不加载字体,和铬和FF的喜欢到向用户显示警告。
我想不出任何解释,为什么发生这种情况。任何建议都会被大大接受。
疯狂,因为它听起来,我有完全相同的问题,和解决方案。谢谢你为我节省了一大堆时间! –
谢谢!解决方案也在这里工作 –
同样的原因在这里。如果没有资产文件发生变化,我有一个Capistrano任务跳过资产编译。由于启用相关网址未被检测为相关更改,因此我的资产从未更新过。 –