2014-01-16 30 views
3

我的应用程序(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的喜欢到向用户显示警告。

我想不出任何解释,为什么发生这种情况。任何建议都会被大大接受。

回答

3

O.k后多少时间它周围挖看来,在某些时候我的资产编译部署期间未能留下一个旧版本的资产,这是与HTTP值硬编码。

结果这是被服务起来代替包含我的相对协议网址中的一个的。

迫使资产重新编译,并确保他们这样做成功的事情出现我期望经过。

+0

疯狂,因为它听起来,我有完全相同的问题,和解决方案。谢谢你为我节省了一大堆时间! –

+0

谢谢!解决方案也在这里工作 –

+0

同样的原因在这里。如果没有资产文件发生变化,我有一个Capistrano任务跳过资产编译。由于启用相关网址未被检测为相关更改,因此我的资产从未更新过。 –