rel="noreferrer"能彻底阻止Referer头发送,非隐藏而是根本不发;它专用于标签点击跳转,不依赖JS、全浏览器兼容、隐式启用noopener,是唯一前端可控的强制清空Referer方案。

直接结论:加 rel="noreferrer" 就能彻底阻止浏览器在跳转时发送 Referer 请求头——不是隐藏,是压根不发。它比 referrerpolicy="no-referrer" 更干净,也更安全。
为什么 rel="noreferrer" 是最简可靠的 Referer 清除方式
浏览器对跨域跳转的 Referer 控制有硬性限制:JavaScript 无法伪造或篡改原始请求头(比如设成 rock&roll.com),只有原生 HTML 属性能真正“不发”。rel="noreferrer" 正是这个唯一被所有现代浏览器(Chrome 51+、Firefox 50+、Safari 11.1+、Edge 79+)标准化支持的方案。
- 它作用于
<a>标签点击行为本身,不依赖 JS,静态页、SEO、爬虫、无障碍环境全部兼容 - 右键“在新标签页打开”不受影响(这是它的局限,但也是设计使然——用户主动行为无法被页面干预)
- 它不控制
<img>、<script>等资源加载的 Referer,那些得用referrerpolicy单独配
rel="noreferrer" 和 referrerpolicy="no-referrer" 别混用
两者表面效果相似,但底层机制和覆盖范围完全不同:
-
rel="noreferrer"只管<a>的点击跳转,且隐式启用noopener(切断window.opener),附带安全收益 -
referrerpolicy="no-referrer"可用于<img>、<script>、<iframe>、<form>等发起请求的标签,但它不处理window.opener,也不影响右键新开行为 - 若你在
<a>上同时写rel="noreferrer" referrerpolicy="no-referrer",后者会被忽略——rel属性优先级更高,且已覆盖全部需求
什么时候必须加?哪些场景容易漏掉
只要链接目标是第三方域名,且你不希望对方知道用户从你哪一页、哪个路径点进来的,就必须加。常见漏点包括:
立即学习“前端免费学习笔记(深入)”;
- 广告位、联盟链接、下载按钮(如
<a href="/download?file=xxx" target="_blank">下载</a>) - 后台管理页里的“查看官网”“跳转帮助中心”等外链
- 邮件模板中嵌入的 HTML 链接(很多 CMS 会自动 strip rel 属性,需检查输出逻辑)
- 用
target="_blank"但只加了noopener没加noreferrer——这会发 Referer,隐私没保护
真正复杂的地方在于:它只管“点击”,不管“右键新开”“拖拽地址栏”“复制粘贴跳转”这些用户主动行为。如果你的业务对 Referer 敏感度极高(比如医疗、金融类站内跳转),就得接受这种边界——HTML 层面没有银弹,只能守住最常发生的点击路径。



















