代码之家  ›  专栏  ›  技术社区  ›  rap-2-h

我应该添加rel noopener,noreferrer吗?

  •  0
  • rap-2-h  · 技术社区  · 6 年前

    假设我有这个html代码:

    <a href="mailto:me@example.org" target="_blank"></a>
    

    据我所知,出于安全和隐私的原因,最佳实践告诉我必须添加 rel="noopener noreferrer" 在每一个外面的环节。我需要考虑 mailto 链接作为外部链接?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Synchro    6 年前

    在一封邮件里,我想这没什么区别。referer头包含源链接位置的url,但电子邮件消息不包含 一个url,因此在这种情况下,我希望referer头为空或不存在。

    不可能用这样的东西 navigator.registerProtocolHandler 在电子邮件客户端中,因为它们通常不支持任何类型的脚本。当你使用webmail客户端时,可能会有不同的行为,但我没有测试过。

    另一方面,如果你有一个包含mail to链接的网页,它被发送到一个邮件客户端,我从来没有看到过一个邮件客户端对一个referer url做任何事情,同样,因为它不是一个http客户端,也不是在处理一个http请求,而是一个协议移交。

    整体设置 rel="noopener noreferrer" 不会损害您的链接,但我怀疑从功能或安全的角度来看,它也不会做任何有用或有趣的事情。

        2
  •  2
  •   Arseny Levin    6 年前

    你可以在这里更好地理解它: https://mathiasbynens.github.io/rel-noopener/

    简而言之:不需要,因为链接不会打开新的 window 可以(ab)使用 window.opener 在上面的链接中解释了这个问题。

    更新: 正如op所指出的-我的假设是邮件客户端将处理 mailto: 链接是错误的。一个人可以用 navigator.registerProtocolHandler 使web应用程序处理这些链接(或任何其他与此相关的链接)。因此,我想你应该补充 rel="noopener noreferrer" 正如最初的提议。