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