題 為什麼文件URL以3斜杠開頭?


HTTP以兩個斜杠開頭。例如。 http://example.com

FTP同樣如此。例如。 ftp://example.com

但是,文件“URL”以三個斜杠開頭。例如。使用chrome讀取pdf文件,URL就是 file:///D:/Desktop/Book.pdf

為什麼 文件URL使用三個斜杠?


173
2017-10-30 14:25


起源


Opera for Windows將其擴展為 file://localhost/D:/Desktop/ 自動。
另見 stackoverflow.com/q/22772897/632951 - Pacerier


答案:


正如其他人所提到的,文件架構的格式為“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.該規範既沒有定義也沒有禁止訪問非本地文件的機制。”


9
2017-09-11 22:18





完整的語法是 file://host/path

如果是主持人 localhost,它可以省略,導致 file:///path

看到 RFC 1738 - 統一資源定位器(URL)

文件URL採用以下形式:

file://<host>/<path>

[...]

作為特例, <host> 可以是字符串“localhost”或空      串;這被解釋為'URL所在的機器      被解釋'。


246
2017-10-30 14:34



很酷,我沒想到這個問題的答案是RFC標準! - Pacerier
@Pacerier差不多 什麼 與互聯網有關的事情可以用RFC來解釋(注意它們不一定是“標準”,但可以這樣採用)。 - slhck
請注意,Tim Berners Lee已為每個網址中的這兩個斜杠道歉: news.bbc.co.uk/2/hi/technology/8306631.stm - Peter
我可以省略嗎? localhost 來自其他協議,或僅適用於 file://? - Agos
請注意,Firefox並不真正遵循這個標準`file:// test / C:\`的行為與`file:/// C:\`相同,而`http:/// test`將提供無效的URL錯誤 - Earlz


丹尼斯解釋了第三個斜線,需要分開 host 來自 path,但其他兩個更有趣......

事實證明,它們是URL語法的無用且有些隨意的添加。 Tim Berners-Lee,萬維網的發明者和許多標準的作者(包括 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個斜杠。


25
2017-09-25 07:11



TimBL在他的文章中也詳細闡述了這一點 常問問題 - Molomby
更不用說只使用就可以節省2個字節 http:example.com 代替 http://example.com 它可能看起來不是很多,但它們加起來。 Google收到了 百萬 一天的搜索。頁面上有多少個鏈接?這意味著對於一百萬次搜索,如果不需要斜杠,則可以節省20 MB的帶寬。 - Cole Johnson
@ColeJohnson - 你知道你也可以省略協議部分嗎?所以 http://example.com 可以鏈接到 //example.com 在通過http傳輸的文檔中。它叫做a 協議相對網址,所有瀏覽器都支持它們。 - Molomby
我很清楚這些,但我個人只在CSS中使用它們。在編寫HTML時,我也使用協議。沒有真正的理由。除了可能是因為幾年前HTML5 + CSS3首次成為“大”時,我看到的幾乎所有網站都是這樣的。 - Cole Johnson
@Molomby,他正在談論當人們不做相關協議網址時浪費的所有字節。這就像> 99%的人口。 - Pacerier