Je construis une application Web et j'utilise Google Analytics (analytics.js) pour les analyses. J'ai récemment remarqué que les analyses ne fonctionnaient pas correctement dans Chrome.
Je charge les analyses à l'aide de l'extrait de code standard dans un module séparé, inclus avec requirejs. J'ai vérifié que ce script s'exécute comme prévu et qu'il exécute l'extrait d'analyse.
Lorsque j'inspecte le trafic réseau dans Firefox, je constate que le script d'analyse est chargé à partir de Google comme prévu (réponse HTTP 200):
Toutefois, lorsque j'exécute exactement la même page dans Chrome, une réponse HTTP 307 pointe vers: vierge et l'analyse ne s'exécute pas:
Toutefois, si je colle l'URL d'analyse directement dans la barre d'adresse Chrome, le script est trouvé. Des idées sur ce qui se passe ici ou sur la façon de le réparer?
307 Internal Redirect
avec Non-Authorative-Reason: Delegate
indique que la demande a été interceptée et modifiée (redirigée) par une extension Chrome via les API webRequest ou webRequest déclarative .
Vous pouvez trouver quelle extension a déclenché la redirection comme suit:
chrome://net-internals/#events
chrome://net-internals/#events
Onglet et recherchez un URL_REQUEST correspondant à votre demande (vous pouvez utiliser le champ de recherche pour filtrer la recherche).t = 7910 [st = 0] + REQUEST_ALIVE [dt = 6] t = 7910 [st = 0] + URL_REQUEST_DELEGATE [dt = 5] t = 7910 [st = 0] DELEGATE_INFO [dt = 5] -> delegate_info = "extension [Nom de l'extension]" t = 7915 [st = 5] CHROME_EXTENSION_REDIRECTED_REQUEST -> extension_id = "ebmlimjkpnhckbaejoagnglgcdhdnjlb" t = 7915 [st = 5] -URL_REQUEST_DELEGATE t = 7915 [st = 5] + URL_REQUEST_START_JOB [dt = 1] -> load_flags = 339804160 (BYPASS_DATA_REDUCTION_PROXY) | REPORT_RAW_HEADERS | VERIFY_EV_CERT) -> méthode = "GET" -> priorité = "FAIBLE" -> url = "https://www.google-analytics.com/analytics.js" t = 7915 [st = 5] URL_REQUEST_REDIRECT_JOB -> raison = "Délégué" t = 7915 [st = 5] URL_REQUEST_FAKE_RESPONSE_HEADERS_CREATED -> HTTP/1.1 307 Redirection interne Emplacement: à propos de: vide Raison ne faisant pas autorité: déléguée
Dans cet exemple de journal, une extension portant le nom "[Nom de l'extension]" et l'ID d'extension "ebmlimjkpnhckbaejoagnjlgcdhdnjlb" ont redirigé la demande. Après avoir trouvé le nom et/ou l’ID de l’extension, vous pouvez visiter chrome://extensions
et désactivez ou supprimez l'extension qui a modifié la demande.
Dans mon cas, la raison de la redirection 307 était plus prosaïque. Par habitude d'utiliser RL relatives au protocole , j'ai supprimé le protocole de l'URL dans le script d'intégration de Google Universal Analytics, en modifiant https://www.google-analytics.com/analytics.js
à //www.google-analytics.com/analytics.js
.
Par exemple ( n'essayez pas cela à la maison):
(fonction (i, s, o, g, r, a, m) {i ['GoogleAnalyticsObject'] = r; i [r] = i [r] || fonction () {(i [r] .q = i [r] .q || []). Push (arguments)}, i [r] .l = 1 * nouvelle Date (); a = s.createElement (o), m = s.getElementsByTagName (o) [ 0]; a.async = 1; a.src = g; m.parentNode.insertBefore (a, m)}) (fenêtre, document, 'script', '
https:// www.google-analytics.com/analytics.js','ga ');
Ceci est déconseillé car Google sert apparemment le script et le suivi des demandes uniquement via https. Ainsi, la suppression du protocole provoque une redirection lors de la première incorporation du script, ainsi que dans toute demande de suivi (!) Suivante. En outre, comme l’a déclaré Paul Irish dans une mise à jour de son article canonique sur les URL relatives au protocole , cette technique n’est plus encouragée ni même méritoire:
Maintenant que SSL est encouragé pour tout le monde et ne pose pas de problème de performances, cette technique est désormais un anti-modèle. Si l'actif dont vous avez besoin est disponible sur SSL, utilisez toujours l'actif https: //.
Dans mon cas, UBlock Origin est activé sur mon navigateur. Une fois déconnecté ou autorisé sur le site, les redirections internes se sont arrêtées