现有关于在HTML中使用协议相对URL的讨论[1],但电子邮件怎么样?
电子邮件客户端或Gmail等服务提供商在HTML电子邮件中使用时会剥离或修改协议相对URL吗?
答案 0 :(得分:21)
我通过Gmail发送了一封包含以下内容的电子邮件:
<a href="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js">link</a>
并且未经修改就收到了。当我右键点击链接以复制链接地址时,Chrome会将https:
添加到其中(因为Gmail使用的是安全HTTP),但是当我查看该元素的HTML时,它显示了{{1}我写的那个标签。
电子邮件服务器更改电子邮件内容是不正常的。
省略协议旨在让Web浏览器在相同内容的安全版本和不安全版本之间进行选择。如果您通过https加载页面并且它包含一个以http开头的src的图像,浏览器会警告用户加载不安全的内容是危险的 - 这是一个令人困惑和令人担忧的消息。如果你通过http加载一个页面,它包含一个以https开头的src的图像,这可以防止其他低效率的缓存。
折衷方案是允许浏览器加载具有与加载它的页面相匹配的安全性的内容 - 不安全页面的效率;完全保证安全页面的安全性。
但是电子邮件客户端总是警告嵌入式内容(图像,脚本......),这意味着省略协议没有任何好处。
此外,非浏览器电子邮件客户端没有开始的协议。它下载信息,然后从磁盘加载它。如果您真的想让电子邮件客户端选择加载具有加载电子邮件的安全级别的嵌入式内容,您可以让客户端在同一台计算机上查找信息。 (他们实际上是假设<a>
表示//
。)
将file:///
URI放入电子邮件中是否安全?我说它没有意义;因此,没有成为非浏览器客户端处理它的标准方法,这意味着您正在查看未定义的行为。
最好根据URI标识的信息的敏感性选择协议。它是专有财务数据的图表吗?使用https。它是一个lolcat吗?使用http。
答案 1 :(得分:14)
不,在电子邮件中使用协议相对URL是不安全的。因为它的更改协议使浏览器可以从网站告诉它使用的任何协议中获取资源。
但是有些电子邮件客户端(特别是Outlook,像往常一样)不会尝试使用HTTP或HTTPS作为协议。相反,他们将使用file://协议并假设您所引用的资源位于本地计算机上。但事实并非如此。所以不要在电子邮件中使用它们。 您必须确保您请求的服务器能够通过HTTP和HTTPS提供内容。如果不是,您可能最终从不安全或不存在的服务器端口获取内容。
IE6不知道如何处理这个问题。如果您关心支持Internet Explorer 6,则不应使用这些。
IE7-8支持协议相对URL,但它们最终会两次获取资源。一次来自HTTP,一次来自HTTPS。这可以减慢一些事情,但我看到的事情对于除了使用IE7-8的人以外的任何人都没有什么问题,如果你使用的是IE,你会有更重要的事情需要担心。
它的浏览器依赖,所以它取决于你使用的是哪个浏览器使用GMAIL在crome中正常工作,而不是在IE6中。