J'ai une feuille de style qui charge les images d'un domaine externe et j'en ai besoin pour charger à partir de https: // à partir de pages de commande sécurisées et http: // à partir d'autres pages, en fonction de l'URL actuelle. J'ai trouvé que démarrer l'URL avec une double barre oblique hérite du protocole actuel. Tous les navigateurs prennent-ils en charge cette technique?
html ex:
<img src="//cdn.domain.com/logo.png" />
css ex:
.class { background: url(//cdn.domain.com/logo.png); }
http
url
https
url-protocol
Rob Volk
la source
la source
Réponses:
Si le navigateur prend en charge RFC 1808 Section 4 , RFC 2396 Section 5.2 ou RFC 3986 Section 5.2 , alors il utilisera en effet le schéma de l'URL de la page pour les références commençant par "//".
la source
ftp://info.cern.ch/pub/www/doc/http-spec.txt
partir de 1991, si quelqu'un avait une copie d'archive.Lorsqu'il est utilisé sur un
link
ou@import
, IE7 / IE8 téléchargera le fichier deux fois par http://paulirish.com/2010/the-protocol-relative-url/Mise à jour de 2014:
la source
Un inconvénient se produit si vos URL sont affichées en dehors du contexte d'une page Web. Par exemple, un message électronique assis dans un client de messagerie (par exemple, Outlook) n'a en fait aucune URL, et lorsque vous affichez un message contenant une URL relative au protocole, il n'y a pas du tout de contexte de protocole évident (le message lui-même est indépendant du protocole utilisé pour le récupérer, que ce soit POP3, IMAP, Exchange, uucp ou autre) de sorte que l'URL n'a pas de protocole auquel être relative. Je n'ai pas étudié la compatibilité avec les clients de messagerie pour voir ce qu'ils font lorsqu'ils sont présentés avec un gestionnaire de protocole manquant - je suppose que la plupart prendront une estimation à http. Apple Mail refuse de vous laisser entrer une URL sans protocole. C'est analogue à la façon dont les URL relatives ne fonctionnent pas dans les e-mails en raison d'un contexte également manquant.
Des problèmes similaires peuvent survenir dans d'autres contextes non HTTP tels que les tweets, les messages SMS, les documents Word, etc.
L'explication la plus générale est que les URL de protocole anonymes ne peuvent pas fonctionner isolément; il doit y avoir un contexte pertinent. Dans une page Web typique, il est donc très bien d'extraire une bibliothèque de scripts de cette façon, mais tous les liens externes doivent toujours spécifier un protocole. J'ai essayé un test simple: des
//stackoverflow.com
cartesfile:///stackoverflow.com
dans tous les navigateurs dans lesquels j'ai essayé, donc elles ne fonctionnent vraiment pas toutes seules.la source
https
ouhttp
peut ne pas être réellement disponible, vous ne pouvez pas toujours supposer que c'est le cas.file://
. C'est un cas d'utilisation mineur, mais quand il se présente, c'est important.//
est.<base href="https://www.google.com">
, vous pouvez afficher le contenu en dehors du côté Web. soit<img src="//www.google.com/images/srpr/logo11w.png">
ou<img src="images/srpr/logo11w.png">
La raison pourrait être de fournir des pages Web portables. Si la page externe n'est pas transportée chiffrée (http), pourquoi les scripts liés devraient-ils être chiffrés? Cela semble être une perte de performances inutile. Dans le cas où la page externe est cryptée de manière sécurisée (https), le contenu lié doit également être crypté. Si la page est chiffrée, le contenu lié non, IE semble émettre un avertissement de contenu mixte . La raison en est qu'un attaquant peut manipuler les scripts en cours de route. Voir http://ie.microsoft.com/testdrive/Browser/MixedContent/Default.html?o=1 pour une discussion plus longue.
La campagne HTTPS Everywhere de l'EFF suggère d'utiliser le https dans la mesure du possible. Nous avons la capacité de serveur de nos jours pour servir des pages Web toujours cryptées.
la source
Juste pour être complet. Cela a été mentionné dans un autre fil:
Veuillez vérifier le fil complet.
la source
Cela semble être une technique assez courante maintenant. Il n'y a pas d'inconvénient, cela aide uniquement à unifier le protocole pour tous les éléments de la page et doit donc être utilisé dans la mesure du possible.
la source