Frage Warum beginnen Datei-URLs mit 3 Schrägstrichen?


HTTP beginnt mit zwei Schrägstrichen. Z.B. http://example.com.

Gleiches gilt für FTP. Z.B. ftp://example.com.

Die Datei "URLs" beginnt jedoch mit drei Schrägstrichen. Z.B. Lesen einer PDF-Datei mit Chrome, wäre die URL file:///D:/Desktop/Book.pdf.

Warum Verwenden Datei-URLs drei Schrägstriche?


172
2017-10-30 14:25


Ursprung


Opera für Windows erweitert es auf file://localhost/D:/Desktop/ automatisch.
Siehe auch stackoverflow.com/q/22772897/632951 - Pacerier


Antworten:


Wie andere bereits erwähnt haben, hat das Dateischema das Format "file: // <host> / <Pfad>". Obwohl die meisten Browser kein Problem mit nur zwei Schrägstrichen haben, und das zu Recht.

Wenn alles gleich ist, existieren der dreifache Schrägstrich und das "localhost" -Schlüsselwort nur, um die Übereinstimmung mit der gültigen URI / URL-Syntax sicherzustellen. Im Kontext des Dateischemas ist der Host bedeutungslos, da er direkt von einem Dateisystem ohne ein explizites Übertragungsprotokoll oder einen Serverdokumentpfad geladen wird. Da es sich nicht um HTTP handelt, kann es nicht von einem Standard-Webserver geladen werden, auf dem theoretisch mehrere lokale virtuelle Hosts eingerichtet werden können. Und es kann nicht von einem Standard-Netzwerk-Volume geladen werden, das technisch ein anderer "Host" ist, da der Browser nur den Volume-Namen wie "file: /// volumes / foo" verwendet. Schließlich funktioniert das Testen von Dateien wie "file: //example.com/some/file" nicht. Es gibt wahrscheinlich einen Grund, einen externen Host zu unterstützen, aber ich kann mir keinen vorstellen.

Die IETF entwickelt derzeit Änderungen, um die dreifache Schrägstrich-Anforderung zu entfernen, obwohl der Entwurf auch ein paar seltsame Möglichkeiten wie file:c|/path und selbst file://///host.example.com/path.

https://tools.ietf.org/html/draft-ietf-appsawg-file-scheme-03

"3. Diese Spezifikation definiert oder verbietet keinen Mechanismus für den Zugriff auf nicht-lokale Dateien."


8
2017-09-11 22:18





Die vollständige Syntax ist file://host/path.

Wenn der Host ist localhostkann es weggelassen werden, resultierend in file:///path.

Sehen RFC 1738 - Uniform Resource Locator (URL):

Eine Datei-URL hat das folgende Format:

file://<host>/<path>

[...]

Als besonderen Fall, <host> kann der String "localhost" oder der leere sein      Schnur; Dies wird als der Computer interpretiert, von dem die URL stammt      interpretiert werden ".


244
2017-10-30 14:34



Cool, ich hätte nicht erwartet, dass die Antwort auf diese Frage ein RFC-Standard wäre! - Pacerier
@ Pacerier Fast etwas das mit dem Internet zu tun hat, kann durch einen RFC erklärt werden (beachten Sie, dass sie nicht notwendigerweise "Standards" sind, sondern als solche übernommen werden können). - slhck
Beachten Sie, dass Tim Berners Lee sich für die 2 Schrägstriche in jeder URL entschuldigt hat: news.bbc.co.uk/2/hi/technology/8306631.stm - Peter
Kann ich das weglassen? localhost auch von anderen Protokollen oder funktioniert es nur für file://? - Agos
Beachten Sie, dass Firefox nicht wirklich diesem Standard `file: // test / C: \` folgt und `file: /// C: \` und `http: /// test` eine ungültige URL liefert Error - Earlz


Dennis hat den dritten Schrägstrich erklärt, der benötigt wurde, um das zu trennen host von dem path, aber die anderen beiden sind viel interessanter ...

Es stellte sich heraus, dass sie eine nutzlose und etwas willkürliche Ergänzung zur URL-Syntax waren. Tim Berners-Lee, Erfinder des World Wide Web und Autor vieler seiner Standards (einschließlich der RFC mit denen Dennis verbunden ist), beklagte sich 2009 in einem Interview über seinen Einsatz des "Doppelstrichs".

Der Doppelstrich, damals eine Programmierkonvention, erwies sich als nicht unbedingt notwendig, erklärte Berners-Lee. Schauen Sie sich all das Papier und die Bäume an, sagte er, die hätten gerettet werden können, wenn die Menschen diese Schrägstriche nicht über die Jahre hinweg schreiben oder schreiben müssten - ganz zu schweigen von der menschlichen Arbeit und der Zeit, die sie damit verbracht haben, diese zwei Tastenanschläge zu schreiben mal in Browser-Adressfeldern.

http://bits.blogs.nytimes.com/2009/10/12/the-webs-inventor-regrets-one-small-thing/

Also, abgesehen von einer kleinen (und uncharakteristischen) Voraussage vor 18 Jahren, hätte Ihre Datei-URL einfach einfach sein können file:/D:/Desktop/Book.pdf, eher, als file:///D:/Desktop/Book.pdf.

Es gibt, um Ihre Frage zu beantworten, keinen guten Grund, warum URLs 3 Schrägstriche haben.


25
2017-09-25 07:11



TimBL führt das auch in seinem FAQ - Molomby
Ganz zu schweigen davon, dass 2 Bytes durch einfaches Benutzen gespeichert werden können http:example.com Anstatt von http://example.com Es scheint nicht viel, aber sie addieren sich. Google erhält Millionen von Suchen pro Tag. Wie viele Links befinden sich auf einer Seite? Mindestens 20. Das bedeutet für eine Million Suchvorgänge, wenn die Schrägstriche nicht benötigt würden, könnten 20 MB Bandbreite gespeichert worden sein. - Cole Johnson
@ColeJohnson - Wusstest du, dass du den Protokollteil auch weglassen kannst? Damit http://example.com könnte als verbunden werden //example.com in einem Dokument über http übertragen. Es heißt a Protokoll relative URLAlle Browser unterstützen sie. - Molomby
Ich bin mir dessen bewusst, aber ich persönlich benutze sie nur in CSS. Beim Schreiben von HTML verwende ich das Protokoll auch. Wirklich kein wirklicher Grund. Außer vielleicht, weil, als HTML5 + CSS3 vor ein paar Jahren zum ersten Mal "groß" wurde, fast alle Seiten, die ich betrachtete, so waren. - Cole Johnson
@Molomby, Er spricht über alle Bytes, die verschwendet werden, wenn Leute keine relativen Protokoll-URLs machen. Das ist wie> 99% der Bevölkerung. - Pacerier