我刚刚从一位同事那里了解到,在链接中省略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中对它进行了测试,它在两者中均有效。这是标准的一部分,还是我应该测试更多的浏览器?
答案 0 :(得分:62)
协议相对网址
您可能会在某些浏览器中收到异常的安全警告。
另见Wikipedia Protocol-relative URLs的简要定义。
曾经it was recommended;但是往前走,it should be avoided。另请参阅StackOverflow问题Why use protocol-relative URLs at all?
答案 1 :(得分:13)
它被称为网络路径引用(缺少的部分称为scheme
或protocol
)defined 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”)来制作相对路径参考。