URL sem “http | https”

89

Acabei de aprender com um colega que omitir a parte "http | https" de um URL em um link fará com que esse URL use qualquer esquema que a página esteja usando.

Por exemplo, se minha página for acessada em http://www.example.com e eu tiver um link (observe o '//' na frente):

<a href="https://www.google.com">Google</a>

Esse link irá para http://www.google.com .

Mas se eu acessar a página em https://www.example.com com o mesmo link, ele irá para https://www.google.com

Eu queria procurar mais informações on-line sobre isso, mas estou tendo problemas para pensar em uma boa frase de pesquisa. Se eu pesquisar por "URLs sem HTTP", as páginas retornadas são sobre URLs com este formato: "www.example.com", que não é o que procuro.

Você chamaria isso de URL sem esquema? Um URL sem protocolo?

Isso funciona em todos os navegadores? Testei no FF e no IE 8 e funcionou em ambos. Isso faz parte de um padrão ou devo testar mais navegadores?

topher-j
fonte
1
Para referência (já que você perguntou quais termos pesquisar), a pesquisa do Google que me trouxe à pergunta StackOverflow original foi: "url absoluto sem protocolo"
David
você não está especificando se é um http ou https, então o navegador decide por você pegando a última página supondo que o link veio da mesma página.
raym0nd
Obrigado David, o link para a duplicata respondeu a todas as minhas perguntas
topher-j
1
@David: Para ser exato, você não o chamaria de URL absoluto se não tivesse um protocolo; é sim um URL relativo.
Gumbo de

Respostas:

15

É chamada de referência de caminho de rede (a parte que está faltando é chamada schemeou protocol) definida na RFC3986 Seção 4.2

4.2 Referência Relativa

Uma referência relativa aproveita a sintaxe hierárquica (Seção 1.2.3) para expressar uma referência de URI relativa ao espaço de nomes de outro URI hierárquico.

  relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

  relative-part = "//" authority path-abempty
                / path-absolute
                / path-noscheme
                / path-empty

O URI referido por uma referência relativa, também conhecido como URI de destino, é obtido aplicando o algoritmo de resolução de referência da Seção 5.

Uma referência relativa que começa com dois caracteres de barra é chamada de referência de caminho de rede (ênfase minha); tais referências raramente são usadas. Uma referência relativa que começa com um único caractere de barra é chamada de referência de caminho absoluto. Uma referência relativa que não começa com uma barra é denominada referência de caminho relativo.

Um segmento de caminho que contém um caractere de dois pontos (por exemplo, "este: aquele") não pode ser usado como o primeiro segmento de uma referência de caminho relativo, pois seria confundido com um nome de esquema. Tal segmento deve ser precedido por um segmento de ponto (por exemplo, "./ this:that") para fazer uma referência de caminho relativo.

Matas Vaitkevicius
fonte
// não pode ser usado na tag base em html. Eu defini <base href = "// abc.com/" e um url de imagem relativo <img src = "/ img / logo.jpg>. No entanto, aberto no navegador, o link da imagem se tornará arquivo: /// abc. com / img / logo.jpg. Alguma solução alternativa?
Scott Chu