Pac*_*ier 198 browser url filesystems
HTTP 以两个斜杠开头。例如http://example.com。
FTP 也是如此。例如ftp://example.com。
但是,文件“URL”以三个斜杠开头。例如,使用 chrome 读取 pdf 文件,URL 将是file:///D:/Desktop/Book.pdf.
为什么文件 URL 使用三个斜杠?
Den*_*nis 269
完整的语法是file://host/path.
如果主机是localhost,则可以省略,结果为file:///path。
文件 URL 采用以下形式:
Run Code Online (Sandbox Code Playgroud)file://<host>/<path>[…]
作为特殊情况,
<host>可以是字符串“localhost”或空字符串;这被解释为“正在解释 URL 的机器”。
Mol*_*mby 31
丹尼斯解释第3斜线,从而分离出所需要host从path,但其他两个是更有趣...
事实证明,它们是对 URL 语法的无用且有些随意的补充。万维网的发明者和许多标准(包括丹尼斯链接的 RFC)的作者蒂姆伯纳斯-李在 2009 年的一次采访中对他使用“双斜线”表示遗憾。
Berners-Lee 先生解释说,虽然双斜线在当时是一种编程约定,但事实证明并不是真正必要的。看看所有的纸张和树木,他说,如果人们多年来不必在纸上写下或打出那些斜线,本可以保存的——更不用说人力和时间花费在这两个按键上的无数次浏览器地址框中的时间。
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 节中给出的语法使整个权限组件(包括双斜杠“//”)成为可选的。
什么时候能活着。
Bee*_*jor 20
正如其他人所提到的,文件架构的格式为“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. 本规范既没有定义也没有禁止访问非本地文件的机制。”
| 归档时间: |
|
| 查看次数: |
47649 次 |
| 最近记录: |