Par exemple, Google Analytics utilise document.location.protocol dans le passe-partout pour le suivi:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
au lieu de
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = '//www.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
Le ssl. le sous-domaine est un argument muet car https://www.google-analytics.com/ga.js fonctionne parfaitement bien.
Connaître Google n'est probablement pas une erreur. Y a-t-il un problème avec certains navigateurs qui ne prennent pas en charge le protocole // honorant la sténographie ou y a-t-il autre chose qui me manque?
EDIT: Cela ne s'applique pas seulement à Google Analytics (exemple de sous-domaine différent). La même chose apparaît sur la page de l'API Font Loader :
wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
'://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
javascript
google-analytics
https
Metalshark
la source
la source
Réponses:
En effet, ce n'était pas un oubli par l'équipe GA!
GA Loader charge un script, ce qui n'est pas affecté par le bogue de double téléchargement sur une
<link>
ou@import
pour une feuille de style dans IE7 / IE8.Ils utilisent l'opérateur conditionnel (ternaire) en
document.location.protocol
raison d'un bogue de casse de bord dans IE6 qui fait apparaître une boîte de dialogue de sécurité sous certains paramètres de sécurité lors de la demande du sous-domaine non-'ssl ' , comme expliqué par Paul Irish (qui a travaillé avec le développeur principal de Google Analytics javascript sur cette question) sur son blog: https://www.paulirish.com/2010/the-protocol-relative-url/ dont je cite ci-dessous:la source
Au moins a un problème dans IE car il provoque des doubles téléchargements: http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema-double-download/
la source
Vous avez déjà souligné la différence dans le cas de Google Analytics, à savoir que la version sécurisée est
https://ssl.
activée au lieu dehttp://www.
. Bien qu'une version sécurisée du www puisse fonctionner, elle peut également être différente de la version ssl:Je ne sais pas si l'un d'eux s'applique à Google. D'un coup d'œil, le code semblait être le même.
la source
//
protocole?Cette réponse Stack Overflow fait de bons points.
Il serait important de spécifier explicitement le protocole afin que l'actif cible soit chargé correctement dans un document ouvert à partir d'un lecteur local (
file:
) ou lors de l'utilisation de "iframe magic" (about:
).la source
//www.google-analytics.com/ga.js
n'est pas une URL selon sa norme, car il lui manque le schéma, qui est obligatoire. Il fonctionne et est utilisé, mais il reste non conforme à la norme URL.Voir RFC3986 §3:
la source