wake-up-neo.com

307 Umleiten beim Laden von analytics.js in Chrome

Ich erstelle eine Web-App und verwende Google Analytics (analytics.js) für die Analyse. Ich habe kürzlich festgestellt, dass die Analyse in Chrome nicht ordnungsgemäß funktioniert.

Ich lade Analytics mit dem Standard-Code-Snippet in ein separates Modul und binde es über requirejs ein. Ich habe überprüft, ob dieses Skript wie erwartet ausgeführt wird und das Analyse-Snippet ausführt.

Wenn ich den Netzwerkverkehr in Firefox überprüfe, kann ich feststellen, dass das Analyseskript wie erwartet von Google geladen wurde (HTTP 200-Antwort):

enter image description here

Wenn ich jedoch genau dieselbe Seite in Chrome ausführe, erhalte ich eine HTTP 307-Antwort, die auf about: blank verweist, und die Analyse wird nicht ausgeführt:

enter image description here

Wenn ich die Analyse-URL jedoch direkt in die Adressleiste von Chrome) einfüge, wird das Skript gefunden. Gibt es Ideen, was hier vor sich geht oder wie man das Problem behebt?

72
Benj

307 Internal Redirect mit Non-Authorative-Reason: Delegate gibt an, dass die Anforderung von einer Chrome Erweiterung über die webRequest oder deklarative webRequest Erweiterungs-APIs abgefangen und geändert (umgeleitet) wurde.

Sie können wie folgt herausfinden, welche Erweiterung die Umleitung ausgelöst hat:

  1. Besuch chrome://net-internals/#events
  2. Lösen Sie die Anfrage aus (in Ihrem Fall Google Analytics).
  3. Gehe zurück zum chrome://net-internals/#events und suchen Sie nach einer URL_REQUEST, die Ihrer Anfrage entspricht (Sie können das Suchfeld verwenden, um die Suche zu filtern).
  4. Klicken Sie auf den Eintrag, um das Protokoll auf der rechten Seite anzuzeigen. Sie sehen den Nebenstellennamen, die Nebenstellen-ID und weitere Informationen zur Anfrage:
 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 [Name der Erweiterung]" 
 t = 7915 [st = 5] CHROME_EXTENSION_REDIRECTED_REQUEST 
 -> extension_id = "ebmlimjkpnhckbaejoagnjlgcdhdnjlb"
 t = 7915 [st = 5] -URL_REQUEST_DELEGATE 
 t = 7915 [st = 5] + URL_REQUEST_START_JOB [dt = 1] 
 -> load_flags = 339804160 (BYPASS_DATA_REDUCTION_PROXYER | MAYBEDATA_REDUCTION | REPORT_RAW_HEADERS | VERIFY_EV_CERT) 
 -> Methode = "GET" 
 -> Priorität = "LOW" 
                 -> url = "https://www.google-analytics.com/analytics.js"
 t = 7915 [st = 5] URL_REQUEST_REDIRECT_JOB 
 -> reason = "Delegate" 
t = 7915 [st = 5] URL_REQUEST_FAKE_RESPONSE_HEADERS_CREATED 
 -> HTTP/1.1 307 Interne Umleitung 
 Speicherort: about: blank 
 Nicht autorisierend-Grund: Delegiert

In diesem Protokollbeispiel hat eine Erweiterung mit dem Namen "[Name der Erweiterung]" und der Erweiterungs-ID "ebmlimjkpnhckbaejoagnjlgcdhdnjlb" die Anforderung umgeleitet. Nachdem Sie den Namen und/oder die ID der Erweiterung gefunden haben, können Sie chrome://extensions und deaktivieren oder entfernen Sie die Erweiterung, die die Anforderung geändert hat.

175
Rob W

In meinem Fall war der Grund für die 307-Weiterleitung prosaischer. Aus Gewohnheit, protokollbezogene URLs zu verwenden, habe ich das Protokoll aus der URL im Einbettungsskript von Google Universal Analytics entfernt und https://www.google-analytics.com/analytics.js In //www.google-analytics.com/analytics.js Geändert. .

Zum Beispiel ( versuche das nicht zu Hause):

(Funktion (i, s, o, g, r, a, m) {i ['GoogleAnalyticsObject'] = r; i [r] = i [r] || Funktion () {(i [r] .q = i [r] .q || []). Push (Argumente)}, i [r] .l = 1 * new Date (); a = s.createElement (o), m = s.getElementsByTagName (o) [ 0]; a.async = 1; a.src = g; m.parentNode.insertBefore (a, m)}) (Fenster, Dokument, 'Skript', 'https: // www.google-analytics.com/analytics.js','ga ');

Dies ist nicht zu empfehlen, da Google das Skript und die Tracking-Anfragen offenbar nur über https bedient. Das Entfernen des Protokolls führt also zu einer Umleitung, sowohl beim ersten Einbetten des Skripts als auch bei jeder (!) Nachfolgenden Verfolgungsanforderung. Darüber hinaus wird diese Technik, wie Paul Irish in einem Update zu seinem Kanonischer Post über protokollbezogene URLs feststellt, nicht mehr empfohlen oder hat in der Tat folgende Vorteile:

Jetzt, da SSL für alle empfohlen wird und keine Leistungsprobleme mehr auftreten, ist diese Technik ein Anti-Pattern. Wenn das von Ihnen benötigte Asset über SSL verfügbar ist, verwenden Sie immer das Asset https: //.

8
Boaz

In meinem Fall habe ich UBlock Origin in meinem Browser aktiviert. Sobald die Verbindung getrennt oder die Site autorisiert wurde, wurden die internen Umleitungen gestoppt

1
John D.