📅  最后修改于: 2023-12-03 15:17:58.502000             🧑  作者: Mango
当我们使用<a>
标签来创建链接时,有时候我们希望在新的标签页中打开链接,但同时又不希望打开的新标签页能够访问原有页面的window
对象,这个时候就可以用到noreferrer noopener
属性。
noreferrer
是指禁止打开页面时发送HTTP Referer
头。HTTP Referer
是指向当前页面的来源页面的URI。如果在新的页面中做了某些操作,发现操作时浏览的网址是一个线上商店,浏览器会将你在该网站网页上的浏览状态发送给该网站。通过这种方式,网站可以收集发生在其网站上的流量信息。
通过加上noreferrer
,我们就可以避免被原有页面跟踪,同时也能实现在新标签页中打开链接。下面是HTML
代码片段:
<a href="https://example.com" target="_blank" rel="noreferrer">example.com</a>
在上述代码中,我们指定了链接的目标为新标签页并加上了noreferrer
属性。
在原有页面和新打开的页面之间,存在一定的互动性。具体来说,可以在新标签页中执行window.opener
对象,该对象在JavaScript中有很多用途。有时候,在新的页面中通过window.opener
可以访问原有页面的内容,如果前者具有恶意,就可以用window.opener
黑掉原有页面。
为了避免这一安全风险,我们可以使用noopener
属性。下面是HTML
代码片段:
<a href="https://example.com" target="_blank" rel="noopener">example.com</a>
最后,我们来看看如何同时使用noreferrer
和noopener
。这样做的好处是既避免了被原有页面跟踪,也阻止了新页面访问原有页面的window.opener
对象。下面是HTML
代码片段:
<a href="https://example.com" target="_blank" rel="noreferrer noopener">example.com</a>
在日常开发中,为了保证网站安全,我们建议在所有需要在新标签页中打开的链接上都添加noreferrer noopener
属性。