HTTP以两个斜杠开头。例如http://example.com
。
FTP同样如此。例如ftp://example.com
。
但是,文件“URL”以三个斜杠开头。例如,使用chrome读取pdf文件,URL就是file:///D:/Desktop/Book.pdf
。
为什么文件URL使用三个斜杠?
HTTP以两个斜杠开头。例如http://example.com
。
FTP同样如此。例如ftp://example.com
。
但是,文件“URL”以三个斜杠开头。例如,使用chrome读取pdf文件,URL就是file:///D:/Desktop/Book.pdf
。
为什么文件URL使用三个斜杠?
Answers:
正如其他人所提到的,文件架构的格式为“file:// <host> / <path>”。虽然大多数浏览器只有两个斜杠没有问题,这是正确的。
在所有条件相同的情况下,仅存在三斜杠和“localhost”关键字以确保符合有效的URI / URL语法。在文件模式的上下文中,主机没有意义,因为它直接从文件系统加载而没有任何显式传输协议或服务器文档路径。因为它不是HTTP,所以无法从标准Web服务器加载,理论上您可以设置多个本地虚拟主机。并且它无法从标准网络卷加载,这在技术上是另一个“主机”,因为浏览器只使用卷名称,如“file:/// volumes / foo”。最后,尝试“file://example.com/some/file”之类的东西不起作用。支持外部主机可能有一些原因,但我想不出任何原因。
IETF目前正在起草改变以消除三重斜线要求,尽管草案也增加了一些奇怪的可能性file:c|/path
,甚至是file://///host.example.com/path
。
https://tools.ietf.org/html/draft-ietf-appsawg-file-scheme-03
“3.该规范既没有定义也没有禁止访问非本地文件的机制。”
完整的语法是file://host/path
。
如果主机是localhost
,则可以省略,导致file:///path
。
文件URL采用以下形式:
file://<host>/<path>
[...]
作为一种特殊情况,
<host>
可以是字符串“localhost”或空字符串; 这被解释为“正在解释URL的机器”。
localhost
其他协议,还是仅适用于file://
?
丹尼斯解释第3斜线,从而分离出所需要host
从path
,但其他两个是更有趣...
事实证明,它们对URL语法来说是无用且有点随意的。万维网的发明者,许多标准(包括丹尼斯所关联的RFC)的作者蒂姆·伯纳斯 - 李在2009年的一次采访中对他的“双斜线”的使用表示遗憾。
伯纳斯 - 李先生解释说,虽然当时的编程惯例是双斜线,但结果并非真正必要。他说,看看所有的纸张和树木,如果人们多年来不必在纸上写下或填写那些纸条,就可以节省下来 - 更不用说人工和打字这些两次击键的时间了数百万浏览器地址框中的时间。
http://bits.blogs.nytimes.com/2009/10/12/the-webs-inventor-regrets-one-small-thing/
因此,除了在18年前的远见中出现轻微(且不典型)的失误,您的文件URL可能很容易file:/D:/Desktop/Book.pdf
,而不是file:///D:/Desktop/Book.pdf
。
回答你的问题,没有充分的理由为什么URL有3个斜杠。
更新:正如@ComFreek在评论中指出的那样,截至2017年,file:/D:/...
上面的示例现在有效!这要归功于RFC 8089,它特别从之前的标准中调出了这个修复程序......
根据[RFC1738]中的定义,文件URL始终以令牌“file://”开头,后跟(可选空白)主机名和“/”。第2节中给出的语法使整个权限组件(包括双斜杠“//”)成为可选的。
什么时间活着。
http:example.com
代替http://example.com
它可以节省2个字节它可能看起来不是很多,但它们相加。Google每天会收到数百万次搜索。页面上有多少个链接?这意味着对于一百万次搜索,如果不需要斜杠,则可以节省20 MB的带宽。
http://example.com
可以链接到//example.com
通过http传输的文档中。它被称为协议相对URL,所有浏览器都支持它们。
file://localhost/D:/Desktop/
自动扩展。