html链接中的这两个参数干啥的:noopener noreferrer

5 阅读4分钟

在 HTML 的 <a> 标签中,noopenernoreferrer 都是 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.cnjobleap.cn 的服务器日志里会看到 Referer: https://mp.jobleap4u.com/discover/xxx,能明确知道流量来自你的详情页。
  • 加了 noreferrer 后,浏览器会删除这个 Refererjobleap.cn 的服务器无法知道用户是从哪个具体页面跳转过来的(只能知道有外部流量,但不知道来源地址)。

2. 隐含 noopener 的功能

如果你的代码里只写了 rel="noreferrer",没写 noopener,也能实现 noopener 的效果——新页面的 window.opener 会被置为 null,同样能防篡改、提性能。
但反过来,只写 rel="noopener" 不能实现 noreferrer 的效果——Referer 信息还是会正常传递。

三、结合你的场景:为什么需要同时加?

你的链接是 target="_blank" 打开 jobleap.cn(自己的引流站点),这两个参数的价值如下:

需求场景noopener 的作用noreferrer 的作用
保护原页面安全✅ 防止 jobleap.cn(或被劫持的页面)篡改原页面✅ 同样能防篡改(隐含 noopener
优化用户体验(性能)✅ 原页面和新页面独立进程,不卡顿✅ 同样优化性能(隐含 noopener
控制来源信息传递❌ 不影响 Refererjobleap.cn 能看到来源✅ 隐藏 Refererjobleap.cn 看不到具体来源

小建议:根据你的统计需求调整

如果你需要让 jobleap.cn 的后台明确知道“流量来自 mp.jobleap4u.com 的详情页”(方便统计引流效果),可以只保留 noopener,去掉 noreferrer——这样既保障安全和性能,又能传递 Referer 信息。
但如果你的场景对“隐藏来源”有需求(比如不希望第三方知道具体来源页),就保留 noopener noreferrer 组合。

总结:一句话讲清两者

  • noopener:防恶意页面篡改原页面 + 提升浏览器性能(必加,尤其用 _blank 时);
  • noreferrer:隐藏跳转的来源信息(Referer)+ 自带 noopener 的所有功能;
  • 两者一起用,是兼顾“安全、性能、隐私”的最优配置,也是当前前端开发中 target="_blank" 链接的“标准实践”。