Content-Security-Policy: upgrade-insecure-requests 指令

Baseline 已廣泛支援

此功能已成熟,可跨多種裝置和瀏覽器版本工作。它自 ⁨2018 年 4 月⁩ 起已在所有瀏覽器中可用。

HTTP Content-Security-Policy (CSP) upgrade-insecure-requests 指令指示使用者代理將網站所有不安全的 URL(透過 HTTP 提供)視為已替換為安全的 URL(透過 HTTPS 提供)。此指令適用於具有大量需要重寫的不安全舊 URL 的網站。

注意: upgrade-insecure-requests 指令在 block-all-mixed-content 之前評估,如果設定了它,後者實際上是空操作。建議設定其中一個指令,但不要同時設定,除非您希望在重定向到 HTTP 後,在不強制執行 HTTPS 的舊瀏覽器上強制執行 HTTPS。

upgrade-insecure-requests 指令不能確保透過第三方網站連結訪問您的網站的使用者在頂級導航中升級到 HTTPS,因此它不能替代 Strict-Transport-Security (HSTS) 標頭。後者仍應設定適當的 max-age,以確保使用者不會受到 SSL 剝離攻擊。

語法

http
Content-Security-Policy: upgrade-insecure-requests;

示例

使用 HTTP 標頭

http
Content-Security-Policy: upgrade-insecure-requests;

使用 HTML meta 元素

html
<meta
  http-equiv="Content-Security-Policy"
  content="upgrade-insecure-requests" />

在希望從 HTTP 遷移到 HTTPS 的域 example.com 上設定上述標頭後,非導航不安全資源請求會自動升級(第一方和第三方請求)。

html
<img src="http://example.com/image.png" />
<img src="http://not-example.com/image.png" />

這些 URL 將在請求發出之前被重寫,這意味著沒有不安全的請求會到達網路。請注意,如果請求的資源實際上無法透過 HTTPS 訪問,則請求將失敗,而不會回退到 HTTP。

html
<img src="https://example.com/image.png" />
<img src="https://not-example.com/image.png" />

導航升級到第三方資源帶來更高的潛在中斷,這些資源不會升級

html
<a href="https://example.com/">Home</a>
<a href="http://not-example.com/">Home</a>

查詢不安全的請求

藉助 Content-Security-Policy-Report-Only 標頭和 report-uri 指令,您可以設定強制策略和報告策略,如下所示:

http
Content-Security-Policy: upgrade-insecure-requests; default-src https:
Content-Security-Policy-Report-Only: default-src https:; report-uri /endpoint

這樣,您仍然可以在您的安全網站上升級不安全的請求,但只有監控策略會受到違反,並將不安全的資源報告到您的端點。

規範

規範
升級不安全請求
# 交付

瀏覽器相容性

另見