Em um URL, o que é // para? [fechadas]

38

Normalmente, quando vejo // , normalmente segue um prefixo de protocolo como http: ou ftp: . Eu nunca vi isso em outro lugar. Por exemplo,

http://www.google.com/

é um URL típico.

No entanto, encontrei as duas sintaxes a seguir para gerar versões diferentes do mesmo site,

link

link

Eu teria pensado que // em qualquer lugar diferente da especificação do protocolo seria inválido. Para minha surpresa, eu estava errado. O que é sobre o final // que representa uma versão diferente do mesmo site?

EDITAR:

Alguém nesse site deve ter percebido o outro porque os dois links agora estão na mesma página.

    
por Chad Harrison 23.08.2012 / 22:05

4 respostas

64

O% principal // faz parte da sintaxe da URL. O inventor da world wide web desculpou-se por esse erro .

Really, if you think about it, it doesn’t need the double-slash. I could have designed it not to have the double-slash. -- Sir Tim Berners-Lee, inventor of the world wide web

Quanto ao trailing // , não é realmente uma barra dupla. A primeira barra separa o nome do host do caminho. A última barra é o caminho. Um servidor web pode, se quiser, tratar um caminho de / diferente de um caminho vazio, e aparentemente o site weather.com o faz. Quanto a saber se isso é por acidente ou intencional, você teria que perguntar a eles sobre isso.

    
por 23.08.2012 / 22:15
18

Mais recentemente, pode-se argumentar que a barra dupla tem um papel. Google recomenda (para evitar acidentalmente chamar conteúdo inseguro de uma página segura, por exemplo) omitindo o protocolo de recursos incorporados (stylesheets, js etc), como este

<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>

Portanto, agora é evidente que essa URL sem protocolo é uma URL totalmente qualificada e não uma URL relativa (que começaria com uma única barra).

    
por 24.08.2012 / 14:21
12

Para responder a pergunta, a especificação original forneceu o protocolo http: (ou possivelmente ftp: , gopher: , mailto: , news: , telnet: , wais: , file: ou prospero: ), em seguida, um // para indicar que a sintaxe do Localizador Uniforme de Recursos (URL) estava sendo usada, depois o host (opcionalmente prefixado com user:password@ ), em seguida, endereçará o início apropriado com outro / . Isso foi proposto em RFC 1738 .

À medida que a Internet evoluiu, http: se tornou o protocolo dominante, então os navegadores agora assumem que um prefixo de http:// deve ser adicionado se não estiver lá.

    
por 24.08.2012 / 00:33
0

Gostaria de acrescentar à resposta aceita por David:

Apesar do pedido de desculpas do inventor da web, acho que a sintaxe double-slash serviu a um propósito importante: destacar-se visualmente. As barras duplas permitiam a distinção visual fácil de URLs em um texto sem hiperlinks. Quando você viu barras duplas, pensou imediatamente que poderia ser inserido em uma janela do navegador, semelhante a como você achava que um texto contendo @ poderia ser usado para enviar um e-mail. Foi especialmente crucial durante a fase de transição para a web, onde os protocolos daquela era (ftp, telnet, gopher) tinham sua própria noção estranha de representar endereços de servidores ou caminhos de recursos, raramente ambos. A maioria dos problemas associados a barras duplas ainda existiria, porque barras duplas são a parte menos criptografada de um URL, pense em números de portas, porcentagem de codificação e diferenciação de maiúsculas e minúsculas. Mas ter um URL como http: something.com poderia ser facilmente confundido com o meu exemplo aqui: something.com. Olhe para o http: // por outro lado, como ele brilha como um diamante. Os cortes duplos têm sido uma parte importante do simbolismo da Web e acredito que também acelerou sua taxa de adoção, mesmo que não tenha sido intencional.

Eles também podem ter facilitado o trabalho do AmigaOS para diferenciar nomes de arquivos e URLs, já que o AmigaOS usava a sintaxe do caminho do arquivo volume:path/to/destination . :)

    
por 24.08.2012 / 14:02

Tags