Pourquoi les URL de fichier commencent-elles par 3 barres obliques?

182

HTTP commence par deux barres obliques. Par exemple http://example.com.

Il en va de même pour FTP. Par exemple ftp://example.com.

Toutefois, les "URL" de fichiers commencent par trois barres obliques. Par exemple, en lisant un fichier pdf en utilisant chrome, l'URL serait file:///D:/Desktop/Book.pdf.

Pourquoi les URL de fichier utilisent-elles trois barres obliques?

Pacerier
la source
5
Opera pour Windows le développe file://localhost/D:/Desktop/automatiquement.
Voir aussi stackoverflow.com/q/22772897/632951
Pacerier le

Réponses:

14

Comme d'autres l'ont mentionné, le schéma de fichier se présente sous la forme "fichier: // <hôte> / <chemin>". Bien que la plupart des navigateurs n'auront pas de problème avec seulement deux barres obliques, et à juste titre.

Toutes choses étant égales par ailleurs, la triple barre oblique et le mot clé "localhost" n'existent que pour garantir la conformité avec la syntaxe URI / URL valide. Dans le contexte du schéma de fichier, l'hôte n'a pas de sens puisqu'il se charge directement à partir d'un système de fichiers sans protocole de transfert explicite ni chemin du document du serveur. Comme ce n'est pas HTTP, il ne peut pas être chargé à partir d'un serveur Web standard où plusieurs hôtes virtuels locaux pourraient en théorie être configurés. Et il ne peut pas charger à partir d'un volume réseau standard qui est techniquement un autre "hôte", car le navigateur utilise simplement le nom du volume tel que "fichier: /// volumes / foo". Enfin, essayer des choses comme "fichier: //exemple.com/some/fichier" ne fonctionne pas. Il y a probablement une raison pour soutenir un hôte externe, mais je ne peux en penser à aucun.

L'IETF élabore actuellement des modifications visant à supprimer l'exigence de triple barre oblique, bien que le projet ajoute également quelques possibilités étranges, comme file:c|/pathet même file://///host.example.com/path.

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

"3. Cette spécification ne définit ni n'interdit un mécanisme pour accéder à des fichiers non locaux."

Beejor
la source
1
Le brouillon est devenu le RFC 8089 en 2017, qui comprend toujours votre devis.
ComFreek
252

La syntaxe complète est file://host/path.

Si l'hôte est localhost, il peut être omis, ce qui entraîne file:///path.

Voir RFC 1738 - Uniform Resource Locator (URL) :

Une URL de fichier prend la forme:

file://<host>/<path>

[…]

Dans un cas particulier, il <host>peut s'agir de la chaîne "localhost" ou de la chaîne vide; ceci est interprété comme "la machine à partir de laquelle l'URL est interprétée".

Dennis
la source
3
Cool, je ne m'attendais pas à ce que la réponse à cette question soit une norme RFC!
Pacerier
33
@Pacerier Presque tout ce qui a trait à Internet peut être expliqué par un RFC (notez qu'il ne s'agit pas nécessairement de "normes", mais qu'elles peuvent être adoptées comme telles).
Slhck
5
Notez que Tim Berners Lee s'est excusé pour ces 2 barres obliques qui se trouvent dans toutes les URL: news.bbc.co.uk/2/hi/technology/8306631.stm
Peter
7
Est-ce que je peux aussi l'omettre localhostd'autres protocoles ou est-ce que ça marche seulement file://?
Agos
3
Notez que Firefox ne suit pas vraiment ce fichier standard: // test / C: \ se comportera de la même façon que `fichier: /// C: \` et `http: /// test` donnera une URL invalide. error
Earlz
27

Dennis a expliqué la 3ème barre oblique, nécessaire pour séparer le hostde la path, mais les deux autres sont beaucoup plus intéressants ...

Il s’avère qu’ils constituaient un ajout inutile et quelque peu arbitraire à la syntaxe de l’URL. Tim Berners-Lee, inventeur du World Wide Web et auteur de bon nombre de ses normes (y compris le RFC auquel Dennis s'est lié), a déploré son utilisation de la «double barre oblique» dans une interview en 2009.

La double barre oblique, bien qu’une convention de programmation à l’époque, s’est avérée inutile, a expliqué M. Berners-Lee. Regardez tous les papiers et les arbres qui auraient pu être sauvés si les gens n’avaient pas eu à écrire ou à taper ces barres au fil des ans - sans parler du travail humain et du temps passé à taper ces deux frappes au clavier fois dans les zones d'adresse du navigateur.

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

Donc, à l’exception d’une erreur mineure (et inhabituelle) il ya quelque 18 ans, l’URL de votre fichier aurait pu être facilement file:/D:/Desktop/Book.pdf, plutôt que file:///D:/Desktop/Book.pdf.

Pour répondre à votre question, il n’ya aucune bonne raison pour laquelle les URL comportent 3 barres obliques.


Mise à jour: Comme @ComFreek l'indique dans les commentaires, à partir de 2017, l' file:/D:/...exemple ci-dessus est maintenant valide! Ceci est dû à la RFC 8089 , qui appelle spécifiquement ce correctif de la norme précédente ...

Selon la définition de la [RFC1738], une URL de fichier commence toujours par le jeton "file: //", suivi d'un nom d'hôte (éventuellement vide) et d'un "/". La syntaxe donnée dans la section 2 rend tout le composant d'autorité, y compris les doubles barres obliques "//", facultatif.

Quel temps pour vivre.

Molomby
la source
2
TimBL l'explique également dans sa FAQ
Molomby
2
Sans oublier que 2 octets pourraient être sauvegardés simplement en utilisant http:example.comau lieu de. http://example.comCela peut ne pas sembler beaucoup, mais ils s'additionnent. Google reçoit des millions de recherches par jour. Combien de liens y a-t-il sur une page? Au moins 20, cela signifie que pour un million de recherches, 20 Mo de bande passante auraient pu être sauvegardés si les barres obliques n'étaient pas nécessaires.
Cole Johnson
1
@ColeJohnson - Saviez-vous que vous pouvez aussi laisser de côté la partie protocole? Donc, http://example.compourrait être lié à comme //example.comdans un document transmis sur http. Cela s'appelle une URL relative au protocole , tous les navigateurs les prennent en charge.
Molomby
Je les connais bien, mais personnellement je ne les utilise qu'en CSS. Lors de l'écriture HTML, j'utilise également le protocole. Aucune vraie raison vraiment. Sauf peut-être parce que lorsque HTML5 + CSS3 est devenu "grand" il y a quelques années, presque tous les sites que j'ai consultés étaient comme ça.
Cole Johnson
1
Contrairement à ce que votre réponse pourrait suggérer, il file:/D:/Desktop/Book.pdfexiste un URI de fichier valide, conformément à la RFC 8089 (à partir de 2017), qui a remplacé la RFC 1738 (1994) en ce qui concerne les aspects URI de fichier.
ComFreek