rel="noreferrer"会导致ga等统计工具将流量误判为「直接访问」,因其使referer请求头和document.referrer为空,破坏渠道归因、ab测试分流及cdn日志分析;它与referrerpolicy="no-referrer"机制不同,且自2024年起在主流浏览器中隐式包含noopener行为,但旧版safari需显式声明。

rel="noreferrer"会让GA等统计工具把流量记为「直接访问」
加了 rel="noreferrer" 的链接跳转后,目标页面收不到 Referer 请求头,document.referrer 也是空字符串。Google Analytics、百度统计、自建埋点服务都依赖这个字段做渠道归因 —— 没它,就只能 fallback 到「直接访问」。
常见错误现象:
- 明明是从首页 banner 点进来的广告页,GA 却显示为「(direct) / (none)」
- AB 测试分流依据 referrer path 做路由,结果所有外链用户都被分到默认组
- CDN 日志里 Referer 字段为空,无法区分是站内导流还是微信/邮件等外部渠道
它和 referrerpolicy="no-referrer" 不是一回事
rel="noreferrer" 是强制不发 Referer 字段,HTTP 请求头里根本不会出现这一项;而 referrerpolicy="no-referrer" 是让浏览器发一个空值或省略字段,部分老旧服务(尤其是自建日志系统)可能仍会解析成默认来源或触发异常校验逻辑。
使用场景差异:
- 只控制单个
<a></a>标签跳转:用rel="noreferrer" - 批量控制图片、脚本等资源请求的 Referer:用
referrerpolicy属性,但注意它对fetch()和XMLHttpRequest无效 - 想兼顾隐私与统计:改用
referrerpolicy="strict-origin-when-cross-origin",跨域时只传 origin,同域仍传完整路径
target="_blank" 时加 noreferrer 会隐式切断 window.opener
从 2024 年起,rel="noreferrer" 在主流浏览器中已隐式包含 noopener 行为,即新页面的 window.opener 为 null。这意味着你单独写 rel="noreferrer" 就能同时解决安全与隐私问题,不必再拼写 rel="noopener noreferrer"。
但要注意:
- 旧版 Safari(15.3 以下)不支持该隐式行为,若需兼容,仍要显式写两个
-
rel="noreferrer"对<form></form>和<area>同样生效,但对window.open()无效 —— 那得靠features=noopener参数 - 它不影响同域跳转,只在跨域时生效;同域链接加了也没副作用,但纯属冗余
真正容易被忽略的是 referrer 数据链断裂
很多团队把 rel="noreferrer" 当成“隐私合规标配”全局启用,却没意识到:一旦 CDN、API 埋点、联盟追踪都依赖 referrer 做归因,加了就等于主动砍断数据链。尤其当你的首屏加载依赖 referrer 判断用户来源渠道(比如微信环境自动唤起小程序),这个属性会让整个判断逻辑失效。
更隐蔽的问题是:它和 <meta name="referrer" content="origin"> 冲突 —— 后者是页面级兜底策略,但会被单个 rel="noreferrer" 覆盖,且不可逆。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











