19

已有关于在 HTML 中使用协议相对 URL 的讨论 [1],但是电子邮件呢?

电子邮件客户端或 Gmail 等服务提供商在 HTML 电子邮件中使用时会去除或修改协议相关 URL 吗?

[1]我可以将我所有的 http:// 链接更改为 // 吗?

4

2 回答 2

21

我通过 Gmail 发送了一封包含以下内容的电子邮件:

<a href="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js">link</a>

并且未经修改就收到了。当我右键单击链接以复制链接地址时,Chromehttps:会在其前面添加(因为 Gmail 使用安全 HTTP),但是当我检查元素的 HTML 时,它会显示<a>我编写的标签。

电子邮件服务器更改电子邮件内容是不正常的。

省略该协议旨在让 Web 浏览器在相同内容的安全版本和不安全版本之间进行选择。如果您通过 https 加载页面,并且该页面包含以 http 开头的 src 的图像,则浏览器会警告用户加载不安全的内容是危险的——这是一条令人困惑和令人担忧的消息。如果您通过 http 加载页面,并且该页面包含以 https 开头的 src 的图像,则可以防止缓存以及其他低效问题。

折衷方案是允许浏览器加载具有与加载它的页面相匹配的安全性的内容——不安全页面的效率;完全保证安全页面的安全性。

但是电子邮件客户端总是会警告嵌入式内容(图像、脚本等),这意味着省略协议没有任何好处。

此外,非浏览器电子邮件客户端没有协议开始。它下载信息,然后从磁盘加载。如果您真的想让电子邮件客户端选择加载具有加载电子邮件的安全级别的嵌入内容,您可以让客户端在同一台计算机上查找信息。(他们实际上会通过假设//手段来做到这一点file:///。)

//那么在电子邮件中放入 URI 是否安全?我会说这没有意义;因此,对于非浏览器客户端来说,还没有一种标准的方式来处理它,这意味着您正在查看未定义的行为。

最好根据 URI 标识的信息的敏感性来选择协议。它是专有财务数据图表吗?使用 https。是乐猫吗?使用 http。

于 2013-06-11T07:21:13.637 回答
15

不,在电子邮件中使用协议相对 URL 是不安全的。因为它更改协议,以便浏览器可以从站点告诉它使用的任何协议中获取资源。

但是一些电子邮件客户端(尤其是 Outlook,像往常一样)不会尝试使用 HTTP 或 HTTPS 作为协议。相反,他们将使用 file:// 协议并假设您所指的资源位于本地计算机上。但它不会。所以不要在电子邮件中使用这些。您必须确保您请求的服务器能够通过 HTTP 和 HTTPS 提供内容。如果不是这样,您最终可能会从不安全或不存在的服务器端口获取内容。

IE6 不知道如何处理。如果您关心支持 Internet Explorer 6,那么您不应该使用这些。

IE7-8 支持协议相对 URL,但它们最终会获取资源两次。一次来自 HTTP,一次通过 HTTPS。这可能会使事情变慢一点,但我看待事情的方式对除了使用 IE7-8 的人之外的任何人来说都不是什么大问题,如果你使用的是 IE,你有更重要的事情要担心。

它取决于浏览器,因此取决于您使用的浏览器 GMAIL 在 crome 中运行良好,但在 IE6 中运行良好。

于 2013-06-11T07:15:47.680 回答