JavaScript 和 CSS 無法通過 SSL 在某些瀏覽器中載入
我有一個我們最近啟用了 SSL 的網站。在大多數瀏覽器中,這都能正常工作:我們的腳本和样式表是使用 HTTPS 導入的,並且大多數瀏覽器都能成功載入頁面。但是,在某些情況下,安全頁面將在沒有頁面樣式或 JavaScript 的情況下載入。
我們在 Mac OS X (v10.6.4) 上與 Safari 5 一致地重現了這一點。我們有另一位使用者報告了在 Mac OS X 上與 Chrome v5 一致的問題,但我認為 Chrome v6 沒有問題。
Safari 向我報告證書無效,因為它是由“未知”機構 (DigiCert) 簽署的。這使情況復雜化,因為 Windows 中的 Safari 沒有這個問題。然而,至少在 Safari 中,使用者可以告訴瀏覽器始終信任來自站點的內容,並且樣式表和腳本將正確載入。
大多數遇到此問題的 Chrome 使用者都有類似的錯誤簽名。但是,其中一位報告說他的瀏覽器下載了空白內容的文件。在這些情況下,Chrome 的錯誤控制台會指示該文件被解釋為正確的類型,但使用空白 MIME 類型傳輸。
該站點本身執行 Apache,靜態內容伺服器使用 Lighttpd。
這個問題的不一致使得很難確定,所以任何建議都將不勝感激。
事實證明,這是我們如何在靜態內容伺服器上設置證書的問題。它是在 Lighttpd 中設置的,因此 Safari 無法從根證書跟隨證書鏈到中間證書。我們必須將證書堆疊在一個文件中,並將伺服器證書移動到 pem 文件中。之後,Safari 將對我們靜態伺服器的請求視為有效,並再次開始向瀏覽器提供 JavaScript 和 CSS。
您是否使用完整的 url 對文件進行了硬編碼引用?例如’ http://server/file.cs '
如果瀏覽器拒絕顯示安全網頁的不安全內容,那麼您將遇到您所描述的問題。