Dave Ward diz:
Não é exatamente uma leitura leve, mas a seção 4.2 da RFC 3986 fornece URLs totalmente qualificados que omitem o protocolo (o HTTP ou HTTPS). Quando o protocolo de uma URL é omitido, o navegador usa o protocolo do documento subjacente.
Simplificando, esses URLs "sem protocolo" permitem que uma referência como essa funcione em todos os navegadores em que você experimenta:
//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js
Parece estranho a princípio, mas esse URL "sem protocolo" é a melhor maneira de referenciar conteúdo de terceiros disponível via HTTP e HTTPS.
Isso certamente resolveria vários erros de conteúdo misto que estamos vendo nas páginas HTTP - supondo que nossos ativos estejam disponíveis via HTTP e HTTPS.
Este navegador é totalmente compatível? Existem outras advertências?
fonte
Respostas:
Eu testei completamente antes de publicar. De todos os navegadores disponíveis para teste nos navegadores , só consegui encontrar um que não manipulasse corretamente o URL relativo do protocolo: um navegador obscuro * nix chamado Dillo .
Há duas desvantagens sobre as quais recebi comentários:
fonte
link
elemento. Por exemplo, ao especificar//fonts.googleapis.com/css?family=Rokkitt:400,700
, o IE6 tenta carregarhttp://mysite.com/fonts.googleapis.com/css/<...>
. Não tão bom!A questão de saber se um pode mudar todos os seus links para serem relativos ao protocolo pode ser discutível, considerando a questão de se deve ou não fazê-lo. De acordo com Paul Irish :
fonte
Se você usar URLs sem protocolo para carregar folhas de estilo, o IE 7 e 8 fará o download duas vezes: http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema-double-download/
Portanto, isso deve ser evitado para CSS, se você gosta de um bom desempenho.
fonte
Sim, as referências de caminho de rede já foram especificadas no RFC 1808 e devem funcionar com todos os navegadores.
fonte
Apenas para misturar isso, se você estiver desenvolvendo em um servidor local, pode não funcionar. Você precisa especificar um esquema, caso contrário, o navegador pode assumir que
src="//cdn.example.com/js_file.js"
ésrc="file://cdn.example.com/js_file.js"
, o que será interrompido, pois você não está hospedando este recurso localmente.O Microsoft Internet Explorer parece ser particularmente sensível a isso, consulte esta pergunta: Não é possível carregar o jQuery no Internet Explorer no host local (WAMP)
Você provavelmente sempre tentaria encontrar uma solução que funcione em todos os seus ambientes com a menor quantidade de modificações necessárias.
A solução usada pelo HTML5Boilerplate é ter um fallback quando o recurso não for carregado corretamente, mas isso só funcionará se você incorporar uma verificação:
Eu postei esta resposta aqui também.
ATUALIZAÇÃO: o HTML5Boilerplate agora usa
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
depois de decidir descontinuar URLs relativos ao protocolo, veja aqui .fonte
Não tive esses problemas ao usar: //domínio.com - mas você precisa adicionar dois pontos no início. Yoast escreveu um bom artigo sobre isso há algum tempo. Mas está perdido em sua pilha de postagens no blog.
fonte
Se você deseja garantir que todas as solicitações sejam atualizadas para um protocolo seguro, há uma opção simples de usar o cabeçalho upgrade-insecure-orders da política de segurança de conteúdo
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests
fonte