it-swarm.com.de

Warum beginnen Datei-URLs mit drei Schrägstrichen?

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

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

Datei "URLs" beginnen jedoch mit drei Schrägstrichen. Z.B. Wenn Sie eine PDF-Datei mit Chrome lesen, lautet die URL file:///D:/Desktop/Book.pdf.

Warum verwenden Datei-URLs drei Schrägstriche?

183
Pacerier

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 sicherzustellen. 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 arbeitet derzeit an Änderungen, um die Dreifach-Schrägstriche zu beseitigen. Der Entwurf fügt jedoch auch einige ungerade Möglichkeiten wie file:c|/path und gerade file://///Host.example.com/path hinzu.

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."

14
Beejor

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

Wenn der Host localhost ist, kann er weggelassen werden, was zu file:///path führt.

Siehe RFC 1738 - Uniform Resource Locators (URL) :

Eine Datei-URL hat die Form:

file://<Host>/<path>

[…]

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

250
Dennis

Dennis hat den dritten Schrägstrich erklärt, der benötigt wird, um die Host von der path zu trennen, 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 the RFC , mit denen Dennis in Verbindung stand), beklagte seine Verwendung des 'doppelten Schrägstrichs' in einem Interview im Jahr 2009.

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 geringfügigen (und ungewöhnlichen) Fehlsichtigkeit vor etwa 18 Jahren hätte Ihre Datei-URL einfach file:/D:/Desktop/Book.pdf und nicht file:///D:/Desktop/Book.pdf lauten können.

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


Update: Wie @ComFreek in den Kommentaren vermerkt, ist ab 2017 das file:/D:/... Beispiel jetzt gültig! 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.

27
Molomby