web-dev-qa-db-fra.com

307 Rediriger lors du chargement de analytics.js dans Chrome

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):

enter image description here

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:

enter image description here

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?

72
Benj

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:

  1. Visite chrome://net-internals/#events
  2. Déclenchez la demande (Google Analytics, dans votre cas).
  3. Retournez au chrome://net-internals/#events Onglet et recherchez un URL_REQUEST correspondant à votre demande (vous pouvez utiliser le champ de recherche pour filtrer la recherche).
  4. Cliquez sur l'entrée pour afficher le journal à droite. Vous verrez le nom de l'extension, l'ID d'extension et d'autres informations sur la demande:
 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.

175
Rob W

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: //.

8
Boaz

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

1
John D.