it-swarm-es.tech

307 Redirigir al cargar analytics.js en Chrome

Estoy creando una aplicación web y utilizando Google Analytics (analytics.js) para análisis. Recientemente noté que los análisis no funcionan correctamente en Chrome.

Estoy cargando análisis utilizando el fragmento de código estándar en un módulo separado e incluido a través de requirejs. He verificado que esta secuencia de comandos se ejecuta como se esperaba y ejecuta el fragmento de análisis.

Cuando inspecciono el tráfico de red en Firefox, puedo ver que el script de análisis se carga desde Google como se esperaba (respuesta HTTP 200):

enter image description here

Sin embargo, cuando ejecuto exactamente la misma página en Chrome, recibo una respuesta HTTP 307 que apunta a aproximadamente: en blanco, y el análisis no se ejecuta:

enter image description here

Sin embargo, si pego la URL analítica directamente en la barra de direcciones de Chrome, se encuentra la secuencia de comandos. ¿Alguna idea de lo que está pasando aquí, o cómo solucionarlo?

70
Benj

307 Internal Redirect con Non-Authorative-Reason: Delegate indica que la solicitud fue interceptada y modificada (redirigida) por una extensión de Chrome a través de webRequest or declarative webRequest extension API.

Puede averiguar qué extensión activó la redirección de la siguiente manera:

  1. Visita chrome://net-internals/#events
  2. Activar la solicitud (google analytics, en su caso).
  3. Regrese a la pestaña chrome://net-internals/#events y busque un URL_REQUEST que coincida con su solicitud (puede usar el cuadro de búsqueda para filtrar la búsqueda).
  4. Haga clic en la entrada para mostrar el registro en el lado derecho. Verá el nombre de la extensión, el ID de la extensión y otra información sobre la solicitud:
 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 = "extensión [Nombre de la extensión]" 
 t = 7915 [st = 5] CHROME_EXTENSION_REDIRECTED_REQUEST 
 -> extension_id = "ebmlimjkpnhckbaejoagnagnjlgcdhdnjlb"
 t = 7915 [st = 5] -URL_REQUEST_DELEGATE 
 t = 7915 [st = 5] + URL_REQUEST_START_JOB [dt = 1] 
 -. | REPORT_RAW_HEADERS | VERIFY_EV_CERT) 
 -> method = "GET" 
 -> priority = "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 Redirect interno 
 Ubicación: about: blank 
 Razón no autorizada: Delegate

En este ejemplo de registro, una extensión con el nombre "[Nombre de la extensión]" y el ID de extensión "ebmlimjkpnhckbaejoagnjlgcdhdnjlb" redirigió la solicitud. Después de encontrar el nombre y/o la ID de la extensión, puede visitar chrome://extensions y desactivar o eliminar la extensión que modificó la solicitud.

173
Rob W

En mi caso, la razón de la redirección 307 fue más prosaica. Por costumbre de usar URLs relativas al protocolo , he eliminado el protocolo de la URL en el script de inserción de Google Universal Analytics, cambiando https://www.google-analytics.com/analytics.js a //www.google-analytics.com/analytics.js.

Por ejemplo (no intente esto en casa):

(función (i, s, o, g, r, a, m) {i ['GoogleAnalyticsObject'] = r; i [r] = i [r] || function () {(i [r] .q = i [r] .q || []). Push (argumentos)}, 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)}) (ventana, documento, 'script', ' https: // www.google-analytics.com/analytics.js','ga ');

Esto no es aconsejable ya que Google aparentemente sirve el script y las solicitudes de seguimiento solo a través de https. Por lo tanto, la eliminación del protocolo provoca una redirección tanto al incrustar por primera vez el script como en cualquier (!) Posterior solicitud de seguimiento. Además, según lo declarado por Paul Irish en una actualización de su publicación canónica sobre las URL relativas al protocolo , esta técnica ya no se recomienda o, de hecho, tiene mérito:

Ahora que se recomienda SSL para todos y no tiene problemas de rendimiento, esta técnica ahora es un antipatrón. Si el activo que necesita está disponible en SSL, use siempre el activo https: //.

7
Boaz

En mi caso, tengo UBlock Origin activado en mi navegador. Una vez desconectado o autorizado el sitio, las redirecciones internas se han detenido.

0
John D.