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-origin
strict-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 的浏览器中加载。