Ultimamente, vi blocos de código funcionando como este:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
E de acordo com o RFC 2396 (Sintaxe URI) e o RFC 2616 (HTTP 1.1), esses URI começando com duas barras são válidos, mas infelizmente os RFCs não os explicam.
Alguém pode me indicar um recurso que explique como os navegadores irão / devem / processam esses URIs?
html
http
uri
protocol-relative
pagão
fonte
fonte
../g
- ele usará o protocolo atual e conduzirá parahttp://a/b/c/g
.xml:base
para defini-lo explicitamente em qualquer elemento . Por padrão, em HTML, o URI básico é o mesmo URI da página (mas dentro de um arquivo CSS, o URI básico é relativo ao uri CSS, não ao HTML que o contém , mas o IE mais antigo o tornou em relação ao HTML). Em outros protocolos e linguagens, pode ser diferente (em XSLT, depende do item atual, por exemplo). Veja também<html:base>
.http
! Depende do protocolo do contexto da página. Se o contexto foi carregado emhttp://a/b/c/d;p?q
, então//g
realmente resolve parahttp://g
. Mas se a página foi carregada comohttp://a/b/c/d;p?q
então o resultado seráhttps://g
. E também não se esqueça de outros protocolos comofile://
(a página é carregada do disco) - o que definitivamente vai te dar muita dor de cabeça.Esses são URLs relativos ao protocolo. Eles apontam para um endereço, mantendo o protocolo atual.
Essa notação é freqüentemente usada para evitar o problema de "conteúdo misto" (uma mensagem de aviso do IE reclamando
http
ehttps
recursos na mesma página HTTPS).Atualização: documentação oficial no RFC 3986:
fonte
Eles são urls independentes de protocolo. Se a página da web for servida em https, a solicitação usará https, se for http, então http.
Paul Irish parece tê-los popularizado incluindo-os em seu código clichê.
fonte
Esteja ciente de que não é apenas independente de http ou https , mas também de arquivo , ftp , etc.
Isso significa que se você abrir o arquivo .htm diretamente em seu navegador no localhost, o navegador resolverá // como protocolo de arquivo e sua página não funcionará. Isso pode causar problemas em sites compactados como aplicativos "nativos" usando ferramentas como Electron, PhoneGap, etc.
Exemplo:
para
fonte