Referrer-Policy
Referrer-Policy HTTP 標頭 控制傳送請求時包含多少 引用者資訊(透過 Referer 標頭髮送)。除了 HTTP 標頭外,您還可以 在 HTML 中設定此策略。
語法
Referrer-Policy: no-referrer
Referrer-Policy: no-referrer-when-downgrade
Referrer-Policy: origin
Referrer-Policy: origin-when-cross-origin
Referrer-Policy: same-origin
Referrer-Policy: strict-origin
Referrer-Policy: strict-origin-when-cross-origin
Referrer-Policy: unsafe-url
注意:原始標頭名稱 Referer 是“referrer”(引用者)一詞的拼寫錯誤。Referrer-Policy 標頭沒有此拼寫錯誤。
指令
no-referrer-
將省略
Referer標頭:傳送的請求不包含任何引用者資訊。 no-referrer-when-downgrade-
當協議安全級別保持不變或提高時(HTTP→HTTP、HTTP→HTTPS、HTTPS→HTTPS),在
Referer中傳送 來源、路徑和查詢字串。對於傳送到安全性較低的目的地(HTTPS→HTTP、HTTPS→file)的請求,不要傳送Referer標頭。 origin-
僅在
Referer標頭中傳送 來源。例如,https://example.com/page.html中的文件將傳送引用者https://example.com/。 origin-when-cross-origin-
當對同一協議級別執行 同源 請求時(HTTP→HTTP、HTTPS→HTTPS),傳送 來源、路徑和查詢字串。對於跨源請求以及傳送到安全性較低的目的地(HTTPS→HTTP)的請求,僅傳送來源。
same-originstrict-origin-
當協議安全級別保持不變時(HTTPS→HTTPS),僅傳送來源。對於傳送到安全性較低的目的地(HTTPS→HTTP)的請求,不要傳送
Referer標頭。 strict-origin-when-cross-origin(預設值)-
執行同源請求時,傳送來源、路徑和查詢字串。對於跨源請求,當協議安全級別保持不變時(HTTPS→HTTPS),僅傳送來源。對於傳送到安全性較低的目的地(HTTPS→HTTP)的請求,不要傳送
Referer標頭。注意:如果未指定策略,或提供的策略值無效(請參閱規範修訂版 2020年11月),則此為預設策略。以前,預設值為
no-referrer-when-downgrade。 unsafe-url-
執行任何請求時,無論安全性如何,均傳送來源、路徑和查詢字串。
警告:此策略會將 HTTPS 資源 URL 中的潛在隱私資訊洩露到不安全的來源。請仔細考慮此設定的影響。
與 HTML 整合
您還可以在 HTML 內部設定引用者策略。例如,您可以使用 <meta> 元素(其 name 為 referrer)為整個文件設定引用者策略
<meta name="referrer" content="origin" />
您可以在 <a>、<area>、<img>、<iframe>、<script> 或 <link> 元素上指定 referrerpolicy 屬性,以針對各個請求設定引用者策略
<a href="http://example.com" referrerpolicy="origin">…</a>
或者,您可以在 a、area 或 link 元素上設定 noreferrer 連結關係
<a href="http://example.com" rel="noreferrer">…</a>
警告:如上所示,noreferrer 連結關係的寫法不帶連字元。當您使用 <meta> 元素為整個文件指定引用者策略時,應帶連字元編寫:<meta name="referrer" content="no-referrer">。
與 CSS 整合
示例
no-referrer
| 來自文件 | 導航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
任何地方 | (無引用者) |
no-referrer-when-downgrade
| 來自文件 | 導航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
https://example.com/otherpage |
https://example.com/page |
https://example.com/page |
https://mozilla.org |
https://example.com/page |
https://example.com/page |
http://example.com | (無引用者) |
origin
| 來自文件 | 導航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
任何地方 | https://example.com/ |
origin-when-cross-origin
| 來自文件 | 導航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
https://example.com/otherpage |
https://example.com/page |
https://example.com/page |
https://mozilla.org |
https://example.com/ |
https://example.com/page |
http://example.com/page | https://example.com/ |
same-origin
| 來自文件 | 導航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
https://example.com/otherpage |
https://example.com/page |
https://example.com/page |
https://mozilla.org |
(無引用者) |
strict-origin
| 來自文件 | 導航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
https://mozilla.org |
https://example.com/ |
https://example.com/page |
http://example.com | (無引用者) |
| http://example.com/page | 任何地方 | http://example.com/ |
strict-origin-when-cross-origin
| 來自文件 | 導航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
https://example.com/otherpage |
https://example.com/page |
https://example.com/page |
https://mozilla.org |
https://example.com/ |
https://example.com/page |
http://example.com | (無引用者) |
unsafe-url
| 來自文件 | 導航到 | 使用的引用者 |
|---|---|---|
https://example.com/page?q=123 |
任何地方 | https://example.com/page?q=123 |
指定回退策略
如果要指定回退策略(以防所需策略的瀏覽器支援範圍不夠廣),請使用逗號分隔的列表,並將所需策略指定在最後
Referrer-Policy: no-referrer, strict-origin-when-cross-origin
在上述情況下,僅當瀏覽器不支援 strict-origin-when-cross-origin 策略時,才會使用 no-referrer。
注意:僅在 Referrer-Policy HTTP 標頭中支援指定多個值,在 referrerpolicy 屬性中不支援。
瀏覽器特定偏好/設定
Firefox 首選項
您可以在 Firefox 首選項中配置預設引用者策略。首選項名稱因版本而異
- Firefox 59 及更高版本:
network.http.referer.defaultPolicy(以及專用網路的network.http.referer.defaultPolicy.pbmode) - Firefox 53 到 58 版本:
network.http.referer.userControlPolicy
所有這些設定都採用相同的取值範圍:0 = no-referrer、1 = same-origin、2 = strict-origin-when-cross-origin、3 = no-referrer-when-downgrade。
規範
| 規範 |
|---|
| 引用者策略 # referrer-policy-header |
瀏覽器相容性
BCD 表僅在啟用 JavaScript 的瀏覽器中載入。