对于在新标签页中打开的链接,始终使用 "noopener" 或 "noreferrer"

为了在新选项卡中打开链接,我们使用 target="_blank" 属性。然而,如果你稍不留意,它可能会导致一些问题。

首先,新打开的选项卡使用与打开的选项卡相同的进程。因此,它会降低页面速度。更重要的是,新选项卡能够通过 window.opener 对象访问 opener 页面的 window 对象。假设新选项卡执行以下代码:

window.opener.location = 'https://example.com'

正如代码所暗示的,它将原始选项卡重定向到一个假网站。如果假网站的用户界面与真网站相同,会发生什么?由于用户已经打开了它,他们可能没有意识到他们正在查看的网站不是真实的。

添加 rel="noopener" 修复了这些问题。它不仅修复了 noopener 所做的问题,而且还阻止了 Referer 头被发送到新选项卡。

<!-- 不要这样做 -->
<a target="_blank">...</a>

<!-- 像这样 -->
<a target="_blank" rel="noopener">...</a>

<!-- 或者 -->
<a target="_blank" rel="noreferrer">...</a>
<a target="_blank" rel="noopener noreferrer">...</a>

一些现代浏览器,如 Chrome 88+,如果缺少 noopener 行为,会自动添加它。但是,仍然建议手动添加 rel="noopener"rel="noreferrer",以避免旧浏览器中的安全性和性能问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值