Warum beginnen Datei-URLs mit drei Schrägstrichen?

182

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

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

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

Warum verwenden Datei-URLs drei Schrägstriche?

Pacerier
quelle
5
Opera für Windows erweitert es file://localhost/D:/Desktop/automatisch.

Antworten:

14

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

Das Schlüsselwort "localhost" und der Schrägstrich "triple slash" sind nur vorhanden, um die Konformität mit der gültigen URI / URL-Syntax zu gewährleisten. Im Kontext des Dateischemas ist der Host bedeutungslos, da er ohne explizites Übertragungsprotokoll oder Serverdokumentpfad direkt aus einem Dateisystem 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 sein könnten. Und es kann nicht von einem Standard-Netzwerk-Volume geladen werden, das technisch gesehen ein anderer "Host" ist, da der Browser nur den Volume-Namen wie "file: /// volume / foo" verwendet. Schließlich funktioniert es nicht, Dinge wie "file: //example.com/some/file" auszuprobieren. Es gibt wahrscheinlich einen Grund, einen externen Host zu unterstützen, aber mir fällt keiner ein.

Die IETF entwirft derzeit Änderungen, um die Dreifachschrägstrich-Anforderung zu beseitigen, obwohl der Entwurf auch einige ungerade Möglichkeiten wie file:c|/pathund gerade hinzufügt 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."

Beejor
quelle
1
Der Entwurf wurde 2017 zum RFC 8089 , der auch Ihr Angebot enthält.
ComFreek
252

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

Wenn der Host ist localhost, kann er weggelassen werden, was zur Folge hat file:///path.

Siehe RFC 1738 - Uniform Resource Locators (URL) :

Eine Datei-URL hat die Form:

file://<host>/<path>

[…]

Als Sonderfall <host>kann die Zeichenfolge "localhost" oder die leere Zeichenfolge angegeben werden. Dies wird als "der Rechner, von dem aus die URL interpretiert wird" interpretiert.

Dennis
quelle
3
Cool, ich hätte nicht erwartet, dass die Antwort auf diese Frage ein RFC-Standard ist!
Pacerier
33
@Pacerier Fast alles , was mit dem Internet zu tun hat, kann durch einen RFC erklärt werden (beachten Sie, dass dies nicht unbedingt "Standards" sind, sondern als solche übernommen werden können).
Slhck
5
Beachten Sie, dass sich Tim Berners Lee für die 2 Schrägstriche in jeder URL entschuldigt hat: news.bbc.co.uk/2/hi/technology/8306631.stm
Peter
7
Kann ich das localhostvon anderen Protokollen auch weglassen oder funktioniert es nur für file://?
Agos
3
Beachten Sie, dass Firefox diese Standard-`file: // test / C: \` nicht wirklich befolgt und dass `file: /// C: \` und `http: /// test` eine ungültige URL angeben Fehler
Earlz
27

Dennis hat den dritten Schrägstrich erklärt, musste die Trennung hostvon der path, aber die anderen beiden sind viel interessanter ...

Es stellte sich heraus, dass sie eine nutzlose und etwas willkürliche Ergänzung der URL-Syntax waren. Tim Berners-Lee, Erfinder des World Wide Web und Autor vieler seiner Standards (einschließlich des RFC , mit dem Dennis verbunden war), beklagte seine Verwendung des "doppelten Schrägstrichs" bereits 2009 in einem Interview.

Der doppelte Schrägstrich, obwohl zu der Zeit eine Programmierkonvention, stellte sich als nicht wirklich notwendig heraus, erklärte Berners-Lee. Sehen Sie sich all das Papier und die Bäume an, sagte er, die hätten gerettet werden können, wenn die Leute diese Schrägstriche nicht im Laufe der Jahre hätten schreiben oder tippen müssen - ganz zu schweigen von der menschlichen Arbeit und der Zeit, die sie für die Eingabe dieser zwei Tastenanschläge aufgewendet haben, unzählige Millionen mal in Adressfeldern des Browsers.

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

Abgesehen von einer kleinen (und uncharakteristischen) Vorausschau vor 18 Jahren hätte Ihre Datei-URL also eher einfach sein file:/D:/Desktop/Book.pdfkönnen als file:///D:/Desktop/Book.pdf.

Um Ihre Frage zu beantworten, gibt es keinen guten Grund, warum URLs drei Schrägstriche aufweisen.


Update: Wie @ComFreek in den Kommentaren betont, gilt ab 2017 das file:/D:/...obige Beispiel! Dies ist dem RFC 8089 zu verdanken , der speziell diesen Fix aus dem vorherigen Standard aufruft ...

Gemäß der Definition in [RFC1738] begann eine Datei-URL immer mit dem Token "file: //", gefolgt von einem (optional leeren) Hostnamen und einem "/". Die in Abschnitt 2 angegebene Syntax macht die gesamte Berechtigungskomponente einschließlich der doppelten Schrägstriche "//" optional.

Was für eine Zeit am Leben zu sein.

Molomby
quelle
2
TimBL erläutert dies auch in seinen häufig gestellten
Fragen (
2
Ganz zu schweigen davon, dass 2 Bytes durch einfaches Verwenden http:example.comvon gespeichert werden könnten. http://example.comEs mag nicht viel erscheinen, aber sie summieren sich. Google erhält täglich Millionen von Suchanfragen. Wie viele Links befinden sich auf einer Seite? Mindestens 20. Das bedeutet, dass für eine Million Suchvorgänge, wenn die Schrägstriche nicht benötigt würden, 20 MB Bandbreite eingespart werden könnten.
Cole Johnson
1
@ColeJohnson - Wussten Sie, dass Sie den Protokollteil auch weglassen können? Könnte http://example.comalso wie //example.comin einem über http übertragenen Dokument verlinkt sein . Es wird eine protokollrelative URL genannt , die von allen Browsern unterstützt wird.
Molomby
Ich bin mir dessen sehr wohl bewusst, aber ich persönlich benutze sie nur in CSS. Beim Schreiben von HTML verwende ich auch das Protokoll. Kein wirklicher Grund wirklich. Außer vielleicht, weil HTML5 + CSS3 vor ein paar Jahren zum ersten Mal "groß" wurde, waren fast alle Websites, die ich mir ansah, so.
Cole Johnson
1
Entgegen dem, was Ihre Antwort vermuten lässt, file:/D:/Desktop/Book.pdfhandelt es sich um eine gültige Datei-URI gemäß RFC 8089 (ab 2017), die RFC 1738 (1994) in Datei-URI-Aspekten ersetzt.
ComFreek