Questão Por que os URLs de arquivos começam com três barras?


O HTTP começa com duas barras. Por exemplo. http://example.com.

O mesmo vale para o FTP. Por exemplo. ftp://example.com.

No entanto, os arquivos "URLs" começam com três barras. Por exemplo. Lendo um arquivo pdf usando o chrome, o URL seria file:///D:/Desktop/Book.pdf.

Por quê URLs de arquivos usam três barras?


172


origem


Opera para Windows expande para file://localhost/D:/Desktop/ automaticamente.
Veja também stackoverflow.com/q/22772897/632951 - Pacerier


Respostas:


Como outros mencionaram, o esquema do arquivo está no formato "file: // <host> / <path>". Embora a maioria dos navegadores não tenha problemas com apenas duas barras, e com razão.

Todas as coisas são iguais, a palavra-chave de barra tripla e "localhost" existe apenas para garantir a conformidade com a sintaxe de URI / URL válida. No contexto do esquema do arquivo, o host não tem sentido, pois é carregado diretamente de um sistema de arquivos sem nenhum protocolo de transferência explícito ou caminho do documento do servidor. Como não é HTTP, ele não pode ser carregado a partir de um servidor da Web padrão, onde, em teoria, você poderia ter vários hosts virtuais locais configurados. E ele não pode carregar de um volume de rede padrão que é tecnicamente outro "host", já que o navegador usa apenas o nome do volume como "file: /// volumes / foo". Por fim, tentar coisas como "file: //example.com/some/file" não funciona. Há provavelmente algum motivo para suportar um host externo, mas não consigo pensar em nenhum.

A IETF está atualmente preparando alterações para remover o requisito de tripla barra, embora o rascunho também adicione algumas possibilidades excêntricas como file:c|/path e até mesmo file://///host.example.com/path.

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

"3. Esta especificação não define nem proíbe um mecanismo para acessar arquivos não locais."


8





A sintaxe completa é file://host/path.

Se o host for localhost, pode ser omitido, resultando em file:///path.

Vejo RFC 1738 - Localizador Uniforme de Recursos (URL):

Um URL de arquivo tem o seguinte formato:

file://<host>/<path>

[…]

Como um caso especial, <host> pode ser a string "localhost" ou o vazio      corda; isso é interpretado como "a máquina da qual a URL é      sendo interpretado '.


244



Legal, eu não esperava a resposta para essa pergunta, um padrão RFC! - Pacerier
@Pacerier Quase qualquer coisa o que tem a ver com a internet pode ser explicado por um RFC (note que eles não são necessariamente "padrões", mas podem ser adotados como tal). - slhck
Note que Tim Berners Lee pediu desculpas pelas 2 barras que estão em cada URL: news.bbc.co.uk/2/hi/technology/8306631.stm - Peter
Posso omitir o localhost de outros protocolos também ou funciona apenas para file://? - Agos
Note que o Firefox não segue realmente este padrão. O ``: // test / C: \ `irá se comportar da mesma forma que` file: /// C: \ `e` http: /// test` dará um URL inválido erro - Earlz


Dennis explicou o terceiro corte, necessário para separar o host de path, mas os outros dois são muito mais interessantes ...

Acontece que eles eram uma adição inútil e um tanto arbitrária à sintaxe da URL. Tim Berners-Lee, inventor da World Wide Web e autor de muitos de seus padrões (incluindo o RFC a que Dennis se vinculou), lamentou o uso do 'double slash' em uma entrevista em 2009.

A barra dupla, embora fosse uma convenção de programação na época, acabou por não ser realmente necessária, explicou Berners-Lee. Olhe para todo o papel e árvores, ele disse, que poderiam ter sido salvos se as pessoas não tivessem que escrever ou digitar os cortes no papel ao longo dos anos - sem mencionar o trabalho humano e o tempo gasto digitando esses dois toques no teclado incontáveis ​​milhões de vezes nas caixas de endereço do navegador.

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

Então, salvo por um lapso menor (e não característico) na previsão, há 18 anos, o URL do seu arquivo poderia ter sido facilmente file:/D:/Desktop/Book.pdf, ao invés de file:///D:/Desktop/Book.pdf.

Não há, para responder à sua pergunta, uma boa razão para os URLs terem três barras.


25



A TimBL também elabora isso em seu Perguntas frequentes - Molomby
Sem mencionar que 2 bytes poderiam ser salvos usando apenas http:example.com ao invés de http://example.com Pode não parecer muito, mas eles se somam. O Google recebe milhões de pesquisas por dia. Quantos links estão em uma página? Pelo menos 20. Isso significa que, para um milhão de pesquisas, se as barras não fossem necessárias, 20 MB de largura de banda poderiam ter sido salvas. - Cole Johnson
@ColeJohnson - Você sabia que pode deixar de lado a parte do protocolo? assim http://example.com poderia ser ligado a como //example.com em um documento transmitido por http. É chamado de URL relativo ao protocolo, todos os navegadores os suportam. - Molomby
Eu estou bem ciente disso, mas eu pessoalmente só os uso em CSS. Ao escrever HTML, eu uso o protocolo também. Nenhuma razão real realmente. Exceto talvez porque quando HTML5 + CSS3 se tornou "grande" pela primeira vez há alguns anos, quase todos os sites que eu olhei eram assim. - Cole Johnson
@Mombyby, Ele está falando sobre todos os bytes desperdiçados quando as pessoas não fazem URLs de protocolo relativas. Qual é como> 99% da população. - Pacerier