referrerpolicy是控制HTML元素发起请求时Referer头发送行为的属性,影响隐私因默认no-referrer-when-downgrade在HTTPS→HTTPS跳转仍泄露完整URL(含路径、参数),而origin或strict-origin-when-cross-origin可裁剪为仅源站,兼顾统计与安全。

referrerpolicy 是什么,为什么会影响隐私
referrerpolicy 控制 <a> 标签点击跳转时是否发送 Referer 请求头,以及发什么内容。默认行为(no-referrer-when-downgrade)在 HTTPS → HTTP 跳转时会清空 Referer,但 HTTPS → HTTPS 仍会把完整来源 URL 发给目标站——这可能泄露用户浏览路径、内部路径参数甚至敏感 ID。
比如:<a href="https://example.com" referrerpolicy="no-referrer">跳转</a> 点击后,目标服务器收不到任何 Referer 字段。
常用 referrerpolicy 值的实际效果对比
不同取值对隐私和功能影响差异明显,不是越严格越好:
-
no-referrer:完全不发Referer头。最隐私,但某些依赖来源判断的统计或权限校验(如图片防盗链、OAuth 回调校验)可能失败 -
origin:只发协议+域名+端口(如https://a.com),不带路径和查询参数。平衡性较好,推荐多数场景使用 -
origin-when-cross-origin:同源时发完整 URL,跨域只发 origin。浏览器默认策略之一,兼容性高 -
strict-origin-when-cross-origin:HTTPS→HTTP 跨域时清空Referer;HTTPS→HTTPS 跨域发 origin;同源发完整 URL。当前 Chrome/Firefox 默认值,兼顾安全与兼容 -
unsafe-url:始终发完整 URL(含 path/query),有严重隐私风险,避免使用
哪些链接必须显式设置 referrerpolicy
不是所有 <a> 都需要加,重点盯住这几类:
立即学习“前端免费学习笔记(深入)”;
- 指向第三方分析/广告/社交按钮的链接(如分享到微博、微信 JS-SDK 跳转)——防止泄露当前页面路径
- 用户可点击的「外部文档」「帮助链接」「合作伙伴官网」等跨域跳转
- 含敏感 query 参数的内部链接(如
/dashboard?token=abc&user_id=123),即使同域也建议用origin或no-referrer - 使用
target="_blank"的链接——尤其要注意,它默认开启新 tab 且继承 opener,配合referrerpolicy才算真正收敛追踪面
容易被忽略的坑:rel="noreferrer" 和 referrerpolicy 冲突吗
会。如果同时写:<a href="..." rel="noreferrer" referrerpolicy="origin">,浏览器以 rel="noreferrer" 为准,强制等效于 referrerpolicy="no-referrer" ——referrerpolicy 被静默覆盖。
所以:
- 不要混用
rel="noreferrer"和referrerpolicy - 想精确控制 Referer 就只用
referrerpolicy;图省事用rel="noreferrer"也行,但它不支持细粒度策略(比如你没法只发 origin) -
rel="noopener"和referrerpolicy可共存,二者解决不同问题(前者防window.opener劫持,后者管 Referer)
真正要防追踪又保功能,referrerpolicy="origin" 加 rel="noopener" 是更可控的组合。



















