現代瀏覽器
現代瀏覽器(Chrome、Firefox、Safari、Microsoft Edge),基本上都遵守了 W3C 的 Mixed Content 規范,將 Mixed Content 分為 Optionally-blockable 和Blockable 兩類:
Optionally-blockable 類 Mixed Content 包含那些危險較小,即使被中間人篡改也無大礙的資源。現代瀏覽器默認會加載這類資源,同時會在控制台打印警告信息。這類資源包括:
- 通過 <img> 標簽加載的圖片(包括 SVG 圖片);
- 通過 <video> / <audio> 和 <source> 標簽加載的視頻或音頻;
- 預讀的(Prefetched)資源;
除此之外所有的 Mixed Content 都是 Blockable,瀏覽器必須禁止加載這類資源。所以現代瀏覽器中,對於 HTTPS 頁面中的 JavaScript、CSS 等 HTTP 資源,一律不加載(當前遇到的問題),直接在控制台打印錯誤信息。
移動瀏覽器
前面所說都是桌面瀏覽器的行為,移動端情況比較復雜,當前大部分移動瀏覽器默認都允許加載 Mixed Content。也就是說,對於移動瀏覽器來說,HTTPS 中的 HTTP 資源,無論是圖片還是 JavaScript、CSS,默認都會加載。一般選擇了全站 HTTPS,就要避免出現 Mixed Content,頁面所有資源請求都走 HTTPS 協議才能保證所有平台所有瀏覽器下都沒有問題。