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


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

Même chose pour FTP. Par exemple. ftp://example.com.

Cependant, le fichier "URL" commence 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 fichiers utilisent-elles trois barres obliques?


172
2017-10-30 14:25


origine


Opera pour Windows l'étend à file://localhost/D:/Desktop/ automatiquement
Regarde aussi stackoverflow.com/q/22772897/632951 - Pacerier


Réponses:


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'aient pas de problème avec seulement deux barres obliques, et à juste titre.

Toutes choses égales par ailleurs, le mot clé triple slash et "localhost" existent uniquement 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 charge directement à partir d'un système de fichiers sans protocole de transfert explicite ni chemin de document du serveur. Comme il ne s'agit pas de HTTP, il ne peut pas être chargé depuis un serveur Web standard où, en théorie, plusieurs hôtes virtuels locaux peuvent être configurés. Et il ne peut pas être chargé depuis 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 soutenir un hôte externe, mais je ne peux en penser à aucun.

L’IETF élabore actuellement des modifications pour éliminer l’obligation de triple barre oblique, bien que le brouillon ajoute quelques possibilités étranges comme file:c|/path et 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 d’accès à des fichiers non locaux."


8
2017-09-11 22:18





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

Si l'hôte est localhost, il peut être omis, résultant en file:///path.

Voir RFC 1738 - Uniform Resource Locators (URL):

Un fichier URL prend la forme suivante:

file://<host>/<path>

[...]

Comme cas particulier, <host> peut être la chaîne "localhost" ou la chaîne vide      chaîne; ceci est interprété comme "la machine à partir de laquelle l'URL est      en cours d'interprétation '.


244
2017-10-30 14:34



Cool, je ne m'attendais pas à la réponse à cette question un standard RFC! - Pacerier
@Pacerier presque n'importe quoi cela a à voir avec Internet peut être expliqué par une RFC (notez qu'ils ne sont pas nécessairement des "standards" mais peuvent être adoptés en tant que tels). - slhck
Notez que Tim Berners Lee a présenté ses excuses pour ces 2 barres obliques dans chaque URL: news.bbc.co.uk/2/hi/technology/8306631.stm - Peter
Puis-je omettre le localhost d'autres protocoles aussi ou ne fonctionne-t-il que pour file://? - Agos
Notez que Firefox ne suit pas vraiment ce standard `file: // test / C: \ se comportera comme` file: /// C: \ `et` http: /// test` donneront une URL invalide Erreur - Earlz


Dennis a expliqué la 3ème barre oblique, il fallait séparer la host du path, mais les deux autres sont beaucoup plus intéressants ...

Il s’agit d’un ajout inutile et quelque peu arbitraire à la syntaxe de l’URL. Tim Berners-Lee, inventeur du World Wide Web et auteur de plusieurs de ses normes (notamment le RFC que Dennis a lié à), a déploré son utilisation du «double slash» dans une interview en 2009.

La double coupure, 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, a-t-il dit, qui auraient pu être sauvés si les gens n'avaient pas eu à écrire ou à taper ces coupures sur papier au fil des ans - sans parler du travail humain et du temps fois dans les cases d'adresse du navigateur.

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

Donc, à part une erreur de prévoyance mineure (et inhabituelle) il y a 18 ans, l'URL de votre fichier aurait pu être facilement file:/D:/Desktop/Book.pdf, plutôt que file:///D:/Desktop/Book.pdf.

Il y a, pour répondre à votre question, aucune raison valable pour laquelle les URL ont 3 barres obliques.


25
2017-09-25 07:11



TimBL élabore également ceci dans son FAQ - Molomby
Sans oublier que 2 octets pourraient être sauvegardés en utilisant simplement http:example.com au lieu de http://example.com Cela peut ne pas sembler beaucoup, mais ils s'additionnent. Google reçoit des millions des recherches par jour. Combien de liens sont 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 enregistrés. - Cole Johnson
@ColeJohnson - Saviez-vous que vous pouvez aussi laisser de côté la partie du protocole? Alors http://example.com pourrait être liée à comme //example.com dans un document transmis sur http. On appelle ça URL relative au protocole, tous les navigateurs les prennent en charge. - Molomby
Je les connais bien, mais personnellement, je ne les utilise que dans CSS. En écrivant HTML, j'utilise aussi 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
@Molomby, il parle de tous les octets perdus lorsque les gens ne font pas les URL de protocoles relatifs. Ce qui équivaut à> 99% de la population. - Pacerier