216 votes

Pourquoi les URL des fichiers commencent-ils par trois barres obliques ?

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

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

Cependant, les "URL" des fichiers commencent par trois barres obliques. Par exemple, pour lire un fichier pdf à l'aide de chrome, l'URL serait la suivante file:///D:/Desktop/Book.pdf .

Pourquoi Les URL des fichiers utilisent-ils trois barres obliques ?

6 votes

Opera pour Windows l'étend à file://localhost/D:/Desktop/ automatiquement.

0 votes

285voto

Dennis Points 46916

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

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

Voir RFC 1738 - Localisateurs de ressources uniformes (URL) :

L'URL d'un fichier prend la forme :

file://<host>/<path>

[ ]

Comme un cas particulier, <host> peut être la chaîne "localhost" ou une chaîne vide. vide ; celle-ci est interprétée comme "la machine à partir de laquelle l'URL est est interprétée".

4 votes

Cool, je ne m'attendais pas à ce que la réponse à cette question soit un standard RFC !

36 votes

@Pacerier Presque tout ce qui est qui a trait à l'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).

2 votes

@slhck thx pour l'info =) Btw je me posais la question depuis un certain temps mais c'est quoi l'image @ qweop.com/x3 ?

33voto

Molomby Points 1675

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

Il s'est avéré qu'ils étaient un ajout inutile et quelque peu arbitraire à la syntaxe des URL. Tim Berners-Lee, inventeur du World Wide Web et auteur d'un grand nombre de ses normes (notamment le RFC que Dennis a mis en lien), a déploré son utilisation de la "double barre oblique" dans une interview en 2009.

La double barre oblique, bien qu'il s'agisse d'une convention de programmation à l'époque, s'est avérée ne pas être vraiment nécessaire, a expliqué M. Berners-Lee. Pensez à tout le papier et à tous les arbres qui auraient pu être sauvés si les gens n'avaient pas eu à écrire ou à taper ces barres obliques sur papier au fil des ans, sans parler du travail humain et du temps passé à taper ces deux touches des millions de fois dans les boîtes d'adresses des navigateurs.

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

Ainsi, à l'exception d'une erreur mineure (et non caractéristique) de prévoyance il y a 18 ans, l'URL de votre fichier aurait pu être facilement la suivante file:/D:/Desktop/Book.pdf plutôt que file:///D:/Desktop/Book.pdf .

Pour répondre à votre question, il n'y a aucune raison valable pour que les URL aient trois barres obliques.


Mise à jour : Comme l'indique @ComFreek dans les commentaires, en 2017, le système de gestion de l'information de la Commission européenne a été modifié. file:/D:/... L'exemple ci-dessus est maintenant valide ! Ceci grâce à RFC 8089 qui mentionne spécifiquement cette correction de la norme précédente...

D'après la définition de la [RFC1738], un fichier URL commence toujours par par le jeton "file://", suivi d'un nom d'hôte (éventuellement vide) et d'un "/". et d'un "/". La syntaxe présentée dans la section 2 fait de l'ensemble de la composante y compris les doubles barres obliques "//", est facultatif.

Quelle époque pour être en vie.

2 votes

TimBL développe également ce point dans son FAQ

2 votes

Sans compter que 2 octets pourraient être économisés en utilisant simplement http:example.com au lieu de http://example.com Cela ne semble peut-être pas beaucoup, mais ils s'additionnent. Google reçoit 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, si les barres obliques n'étaient pas nécessaires, 20 Mo de bande passante auraient pu être économisés.

1 votes

@ColeJohnson - Saviez-vous que vous pouvez aussi laisser de côté la partie protocole ? Donc http://example.com pourrait être liée à //example.com dans un document transmis par http. Il s'agit d'un protocole, url relative tous les navigateurs les supportent.

26voto

Beejor Points 346

Comme d'autres l'ont mentionné, le schéma du fichier est sous la forme "file://<host>/<path>". La plupart des navigateurs n'ont pas de problème avec seulement deux barres obliques, et c'est bien normal.

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

L'IETF est en train de rédiger des modifications visant à supprimer l'exigence de la triple barre oblique, bien que le projet ajoute également quelques possibilités bizarres telles que file:c|/path et même file://///host.example.com/path .

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

"3. Cette spécification ne définit ni n'interdit un mécanisme d'accès aux fichiers non locaux."

1 votes

Le projet est devenu RFC 8089 en 2017, ce qui inclut toujours votre devis.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X