没有“http | https”的url

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

举例来说,如果我的网页在http://www.example.com上被访问,并且有链接(注意前面的“//”):

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

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

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

我想在网上寻找更多关于这方面的信息,但我很难想出一个好的search词组。 如果我search“没有HTTP的URL”,返回的页面是关于这种forms的URL:“www.example.com”,这不是我正在寻找的。

你会打电话给一个无计划的URL吗? 无协议的URL?

这是否适用于所有浏览器? 我在FF和IE 8中testing了它,并且在两者中都起作用。 这是标准的一部分,还是应该testing更多的浏览器?

协议相对url。 某些浏览器可能出现exception安全警告。 另请参阅使用协议相对URL在HTTP和HTTPS之间切换 。

在RFC3986第4.2节中定义的称为networkingpath引用 (丢失的部分称为schemeprotocol

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节的参考分辨率algorithm获得的。

以两个斜线字符开头的相对引用被称为networkingpath引用 (强调我的); 这种引用很less使用。 以单斜杠字符开头的相对引用被称为绝对path引用。 不以斜杠字符开始的相对引用被称为相对path引用。

包含冒号字符(例如“this:that”)的path段不能用作相对path引用的第一个段,因为它会被误认为scheme名称。 这样的段必须以点段(例如,“./this:that”)作为相对path参考。