【发布时间】:2018-12-14 02:05:04
【问题描述】:
假设我有这个 HTML 代码:
<a href="mailto:me@example.org" target="_blank"></a>
据我所知,出于安全和隐私的原因,最佳实践告诉我必须在每个外部链接上添加rel="noopener noreferrer"。我是否必须将mailto 链接视为外部链接?
【问题讨论】:
标签: html security mailto privacy
假设我有这个 HTML 代码:
<a href="mailto:me@example.org" target="_blank"></a>
据我所知,出于安全和隐私的原因,最佳实践告诉我必须在每个外部链接上添加rel="noopener noreferrer"。我是否必须将mailto 链接视为外部链接?
【问题讨论】:
标签: html security mailto privacy
您可以在这里更好地理解它:https://mathiasbynens.github.io/rel-noopener/
简短回答:不需要,因为该链接不会打开一个新的window,它可以(ab)使用上面链接中解释的window.opener 问题。
更新: 正如操作所指出的 - 我假设邮件客户端将处理 mailto: 链接是错误的。可以使用navigator.registerProtocolHandler 让网络应用程序处理这些链接(或与此相关的任何其他链接)。因此,我会说您应该按照最初的建议添加rel="noopener noreferrer"。
【讨论】:
mailto 为我打开一个新窗口。
navigator.registerProtocolHandler 处理mailto 链接?默认情况下应该启动一个邮件客户端。
在邮件中,我认为不会有任何区别。引荐来源标头包括源链接位置的 URL - 但电子邮件没有 URL,因此我希望引荐来源标头在这种情况下为空或不存在。
不可能在电子邮件客户端中使用像 navigator.registerProtocolHandler 这样的东西,因为它们通常不支持任何类型的脚本。当您使用网络邮件客户端时,它的行为可能会有所不同,但我尚未对此进行测试。
反过来说,如果您的网页包含发送到邮件客户端的 mailto 链接,我再也没有见过使用引用 URL 做任何事情的邮件客户端,因为它不是 HTTP 客户端并且不处理 HTTP 请求,而是协议切换。
整体设置rel="noopener noreferrer" 不会损害您的链接,但我怀疑从功能或安全的角度来看,它也不会做任何有用或有趣的事情。
【讨论】: