没有“http | https”的网址

时间:2012-02-06 14:37:47

标签: http url https

我刚刚从一位同事那里了解到,在链接中省略URL的“http | https”部分会使该URL使用它所使用的页面使用的任何方案。

例如,如果我的页面是在http://www.example.com访问的,并且我有一个链接(注意前面的'//'):

<a href="//www.google.com">Google</a>

该链接将转到http://www.google.com

但如果我使用相同的链接访问https://www.example.com的网页,则会转到https://www.google.com

我想在网上查找有关此内容的更多信息,但我无法想出一个好的搜索词。如果我搜索“没有HTTP的URL”,返回的页面是关于这种形式的网址:“www.example.com”,这不是我正在寻找的。

你会称那个无方案的URL吗?无协议的URL?

这适用于所有浏览器吗?我在FF和IE 8中对它进行了测试,它在两者中均有效。这是标准的一部分,还是我应该测试更多的浏览器?

2 个答案:

答案 0 :(得分:62)

协议相对网址

您可能会在某些浏览器中收到异常的安全警告。

另见Wikipedia Protocol-relative URLs的简要定义。

曾经it was recommended;但是往前走,it should be avoided。另请参阅StackOverflow问题Why use protocol-relative URLs at all?

答案 1 :(得分:13)

它被称为网络路径引用(缺少的部分称为schemeprotocoldefined in RFC3986 Section 4.2

  

4.2相对参考

     

相对引用利用了分层语法   (1.2.3节)表示相对于名称空间的URI引用   另一个分层URI。

  relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

  relative-part = "//" authority path-abempty
                / path-absolute
                / path-noscheme
                / path-empty
     

通过应用参考分辨率获得相对引用(也称为目标URI)引用的URI   第5节的算法。

     

以两个斜杠字符开头的相对引用是   称为网络路径参考(强调我的);这种参考很少使用。   以单个斜杠字符开头的相对引用称为绝对路径引用。不以斜杠字符开头的相对引用称为相对路径引用。

     

包含冒号字符的路径段(例如,“this:that”)不能用作相对路径引用的第一个段,因为它会被误认为是方案名称。这样的片段前面必须有一个点片段(例如“./this:that”)来制作相对路径参考。