不含“ http | https”的网址


89

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

因此,例如,如果通过http://www.example.com访问我的页面并且我有一个链接(请注意前面的“ //”):

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

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

但是,如果我使用相同的链接访问https://www.example.com上的页面,则它将转到https://www.google.com。

我想在网上寻找有关此内容的更多信息,但是我很难想到一个好的搜索词组。如果我搜索“没有HTTP的URL”,则返回的页面是有关具有以下格式的URL的:“ www.example.com”,这不是我想要的。

您会称其为无方案网址吗?没有协议的URL?

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



1
作为参考(因为您询问了要搜索的术语),导致我遇到原始StackOverflow问题的Google搜索是:“没有协议的绝对URL”
David

您没有指定它是http还是https,因此浏览器会假设链接来自同一页面,因此选择最后一页来为您做出决定。
raym0nd '02

谢谢大卫,重复副本的链接回答了我所有的问题
topher-j 2012年

1
@David:确切地说,如果它没有协议,则不会将其称为绝对URL。而是相对网址。
Gumbo'2

Answers:



15

在RFC3986第4.2节中定义它称为网络路径参考(称为缺少的部分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节的引用解析算法获得的。

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

包含冒号(例如“ this:that”)的路径段不能用作相对路径引用的第一段,因为它会被误认为是方案名称。在这样的段之前必须加一个点段(例如,“ ./ this:that”)以进行相对路径引用。


//不能在html的基本标记中使用。我设置了<base href =“ /// abc.com/”和一个相对的图像URL <img src =“ / img / logo.jpg>。但是,在浏览器上打开后,图像链接将变为file:/// abc。 com / img / logo.jpg。有什么解决方法吗
Scott Chu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.