在 HTML 的 <a> 标签中,noopener 和 noreferrer 都是 rel 属性的取值,核心作用是保障原页面的安全、优化性能,并控制“来源信息”的传递——尤其当你用 target="_blank" 打开新窗口时(就像你引流链接里的配置),这两个参数几乎是“必加项”。下面分别拆解它们的具体作用,再讲两者的关联和你的场景适配。
一、noopener:防篡改+提性能
noopener 的核心是切断新页面与原页面的“窗口关联”,解决 target="_blank" 带来的两个关键问题:
1. 解决安全风险:防止恶意页面篡改原页面
当你用 <a target="_blank" href="xxx"> 打开新窗口时,新页面默认能通过 window.opener 访问原页面的窗口对象。
- 举个例子:如果你的引流链接不小心指向了一个恶意页面(比如链接被劫持、或对方站点被黑),这个恶意页面可以通过
window.opener.location = "https://钓鱼网站.com"篡改你原页面(mp.jobleap4u.com)的 URL,把用户留在原页面的部分引导到钓鱼页面,导致用户流失或信息泄露。 - 而加了
noopener后,新页面的window.opener会变成null,完全无法访问原页面的窗口对象,从根源上杜绝了这种“篡改原页面”的恶意操作。
2. 优化性能:让浏览器更高效
window.opener 会让原页面和新页面保持“关联关系”,浏览器无法将它们完全独立成两个进程(部分浏览器的优化机制)。
- 这会导致:如果新页面加载缓慢、或有大量 JS 运行,可能会“拖累”原页面的流畅度(比如原页面滚动卡顿)。
- 加了
noopener后,浏览器会把原页面和新页面拆成独立进程,互不影响,原页面的性能更稳定,用户体验更好。
二、noreferrer:隐藏来源+隐含 noopener
noreferrer 有两个核心作用,且功能上包含了 noopener(但反过来不成立):
1. 隐藏“来源信息”:不传递原页面地址
当用户点击链接跳转到新页面时,浏览器会自动在 HTTP 请求头里添加一个 Referer 字段(注意:拼写是 Referer,不是 Referrer,是历史遗留问题),告诉新页面的服务器:“这个用户是从哪个页面过来的”。
- 比如你没加
noreferrer时,用户从mp.jobleap4u.com/discover/xxx点击链接到jobleap.cn,jobleap.cn的服务器日志里会看到Referer: https://mp.jobleap4u.com/discover/xxx,能明确知道流量来自你的详情页。 - 加了
noreferrer后,浏览器会删除这个Referer头,jobleap.cn的服务器无法知道用户是从哪个具体页面跳转过来的(只能知道有外部流量,但不知道来源地址)。
2. 隐含 noopener 的功能
如果你的代码里只写了 rel="noreferrer",没写 noopener,也能实现 noopener 的效果——新页面的 window.opener 会被置为 null,同样能防篡改、提性能。
但反过来,只写 rel="noopener" 不能实现 noreferrer 的效果——Referer 信息还是会正常传递。
三、结合你的场景:为什么需要同时加?
你的链接是 target="_blank" 打开 jobleap.cn(自己的引流站点),这两个参数的价值如下:
| 需求场景 | noopener 的作用 | noreferrer 的作用 |
|---|---|---|
| 保护原页面安全 | ✅ 防止 jobleap.cn(或被劫持的页面)篡改原页面 | ✅ 同样能防篡改(隐含 noopener) |
| 优化用户体验(性能) | ✅ 原页面和新页面独立进程,不卡顿 | ✅ 同样优化性能(隐含 noopener) |
| 控制来源信息传递 | ❌ 不影响 Referer,jobleap.cn 能看到来源 | ✅ 隐藏 Referer,jobleap.cn 看不到具体来源 |
小建议:根据你的统计需求调整
如果你需要让 jobleap.cn 的后台明确知道“流量来自 mp.jobleap4u.com 的详情页”(方便统计引流效果),可以只保留 noopener,去掉 noreferrer——这样既保障安全和性能,又能传递 Referer 信息。
但如果你的场景对“隐藏来源”有需求(比如不希望第三方知道具体来源页),就保留 noopener noreferrer 组合。
总结:一句话讲清两者
noopener:防恶意页面篡改原页面 + 提升浏览器性能(必加,尤其用_blank时);noreferrer:隐藏跳转的来源信息(Referer)+ 自带noopener的所有功能;- 两者一起用,是兼顾“安全、性能、隐私”的最优配置,也是当前前端开发中
target="_blank"链接的“标准实践”。