我经常看到以下模式:
<a href="<external>" target="_blank" rel="noopener noreferrer"></a>
但据我所知,noreferrer
暗示了noopener
的作用。那么为什么在这里甚至需要noopener
?
https://html.spec.whatwg.org/multipage/links.html#link-type-noreferrer
<a href="..." rel="noreferrer" target="_blank">
与<a href="..." rel="noreferrer noopener" target="_blank">
具有相同的行为。
请注意,noreferrer
浏览器的支持范围比noopener
中的一种更为广泛
https://caniuse.com/#feat=rel-noreferrer
https://caniuse.com/#feat=rel-noopener
答案 0 :(得分:2)
将“ noopener”和“ noreferrer”组合在一起的rel标记意味着,由于没有noreferrer标签,因此不应将引荐来源信息传递到要链接的网站,并且还可以防止新打开的页面控制传递流量的页面。
rel="noreferrer"
属性与rel="noopener"
属性具有相同的作用,并且还将防止将引荐来源标头发送到新页面。
大多数现代浏览器都支持noopener,但是当不支持noopener时,我们可以使用noreferrer。实际上,将它们都用于支持较旧的浏览器是很有意义的。也没有充分的理由删除rel="noopener"
,因为它似乎没有任何缺点,并且已被广泛考虑。
答案 1 :(得分:-1)
当您链接到可能受到恶意代码影响的外部网站时,该网站可以利用window.opener JavaScript属性通过在页面的同一进程上运行来窃取受众的数字信息。 / p>
因此,通过在链接中添加rel noopener或rel noreferrer,将阻止新选项卡利用JavaScript window.opener功能。
rel =“ noopener”属性可保护window.opener属性访问新页面,并确保它在单独的进程中运行。
rel =“ noreferrer”属性具有类似的质量,但是它也阻止了将引荐来源信息传递到新页面。