Pregunta ¿Por qué las URL de archivos comienzan con 3 barras diagonales?


HTTP comienza con dos barras diagonales. P.ej. http://example.com.

Lo mismo vale para FTP. P.ej. ftp://example.com.

Sin embargo, los archivos "URL" comienzan con tres barras inclinadas. P.ej. Leyendo un archivo pdf usando Chrome, la URL sería file:///D:/Desktop/Book.pdf.

Por qué ¿Las URL de los archivos usan tres barras diagonales?


172


origen


Opera para Windows lo expande a file://localhost/D:/Desktop/ automáticamente.
Ver también stackoverflow.com/q/22772897/632951 - Pacerier


Respuestas:


Como otros han mencionado, el esquema del archivo tiene el formato "file: // <host> / <path>". Aunque la mayoría de los navegadores no tendrán problemas con solo dos barras, y con razón.

En igualdad de condiciones, la palabra clave triple slash y "localhost" solo existe para garantizar la conformidad con la sintaxis URI / URL válida. En el contexto del esquema de archivos, el host no tiene sentido, ya que se carga directamente desde un sistema de archivos sin ningún protocolo de transferencia explícito o ruta del documento del servidor. Debido a que no es HTTP, no se puede cargar desde un servidor web estándar donde, en teoría, podría tener configurados múltiples hosts virtuales locales. Y no se puede cargar desde un volumen de red estándar que es técnicamente otro "host", ya que el navegador simplemente usa el nombre del volumen como "file: /// volumes / foo". Finalmente, intentar cosas como "file: //example.com/some/file" no funciona. Probablemente haya alguna razón para apoyar un host externo, pero no puedo pensar en ninguno.

El IETF actualmente está redactando cambios para eliminar el requisito de triple barra, aunque el borrador también agrega algunas posibilidades extrañas como file:c|/path e incluso file://///host.example.com/path.

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

"3. Esta especificación ni define ni prohíbe un mecanismo para acceder a archivos no locales".


8





La sintaxis completa es file://host/path.

Si el anfitrión es localhost, se puede omitir, lo que resulta en file:///path.

Ver RFC 1738: localizadores uniformes de recursos (URL):

Una URL de archivo toma la forma:

file://<host>/<path>

[...]

Como un caso especial, <host> puede ser la cadena "localhost" o la cadena vacía      cuerda; esto se interpreta como 'la máquina desde la cual se encuentra la URL      siendo interpretado '.


244



Genial, ¡no esperaba que la respuesta a esta pregunta fuera un estándar de RFC! - Pacerier
@Pacerier Casi cualquier cosa que tiene que ver con Internet puede ser explicado por un RFC (tenga en cuenta que no son necesariamente "estándares", pero pueden ser adoptados como tales). - slhck
Tenga en cuenta que Tim Berners Lee se disculpó por esas 2 barras que están en cada URL: news.bbc.co.uk/2/hi/technology/8306631.stm - Peter
¿Puedo omitir el localhost de otros protocolos también o funciona solo para file://? - Agos
Tenga en cuenta que Firefox no sigue realmente este estándar `file: // test / C: \` se comportará igual que `file: /// C: \` y `http: /// test` dará una URL inválida error - Earlz


Dennis ha explicado la tercera barra, necesaria para separar el host desde el path, pero los otros dos son mucho más interesantes ...

Resulta que fueron una adición inútil y algo arbitraria a la sintaxis de la URL. Tim Berners-Lee, inventor de la World Wide Web y autor de muchos de sus estándares (incluyendo el RFC con el que Dennis se relacionó), lamentó su uso del 'doble corte' en una entrevista en 2009.

La doble barra, aunque era una convención de programación en ese momento, resultó no ser realmente necesaria, explicó el Sr. Berners-Lee. Mire todo el papel y los árboles, dijo, que se podrían haber salvado si las personas no hubieran tenido que escribir o escribir esas barras en papel a lo largo de los años, sin mencionar el trabajo humano y el tiempo dedicado a escribir esas dos teclas, incontables millones de veces en los cuadros de direcciones del navegador.

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

Entonces, salvo por un error menor (y poco característico) en la previsión hace unos 18 años, su URL de archivo podría haber sido fácilmente file:/D:/Desktop/Book.pdf, más bien que file:///D:/Desktop/Book.pdf.

No hay, para responder a su pregunta, una buena razón por la cual las URL tienen 3 barras diagonales.


25



TimBL también elabora sobre esto en su Preguntas más frecuentes - Molomby
Sin mencionar que se pueden guardar 2 bytes con solo usar http:example.com en lugar de http://example.com Puede que no parezca mucho, pero se suman. Google recibe millones de búsquedas al día. ¿Cuántos enlaces hay en una página? Al menos 20. Eso significa que para un millón de búsquedas, si no se necesitaban barras diagonales, se podrían haber guardado 20 MB de ancho de banda. - Cole Johnson
@ColeJohnson - ¿Sabía que también puede omitir la parte del protocolo? Asi que http://example.com podría estar vinculado a como //example.com en un documento transmitido a través de http. Se llama protocolo relativo url, todos los navegadores los admiten. - Molomby
Estoy muy consciente de eso, pero personalmente solo los uso en CSS. Al escribir HTML, uso el protocolo también. Realmente no hay una razón real. Excepto quizás porque cuando HTML5 + CSS3 llegó a ser "grande" hace unos años, casi todos los sitios que veía eran así. - Cole Johnson
@Molomby, él está hablando de todos los bytes desperdiciados cuando las personas no hacen las direcciones de protocolo relativas. Que es como> 99% de la población. - Pacerier