2014-01-16 33 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任務跳過資產編譯。由於啓用相關網址未被檢測爲相關更改,因此我的資產從未更新過。 –