La navegación privada de Firefox requiere que se carguen 2 páginas para configurar las cookies

3 minutos de lectura

avatar de usuario
Acorazado

Mi sitio de WordPress (http://robfuquay.staging.wpengine.com/) está configurado para permitir solo las cookies de Google Analytics después de que los usuarios hayan dado su consentimiento a través de un banner adjunto en la parte inferior de la ventana. (Esto se hace a través de este complemento: https://wordpress.org/plugins/cookie-notice/)

Hasta que se dé ese consentimiento tengo una cookie llamada ga-disable-UA-10877870-45 que se establece en true. Cuando se hace clic en el botón de consentimiento, se agrega otra cookie cookie_notice_accepted y puesto a true. Una vez el cookie_notice_accepted la cookie está configurada para truela ga-disable-UA-10877870-45 la cookie está configurada para false a través de la siguiente función:

add_action( 'init', 'set_ga_disable_cookie_according_to_cookie_notice' );

function set_ga_disable_cookie_according_to_cookie_notice() {
  if ( function_exists( 'cn_cookies_accepted' ) && function_exists('get_ua')) {
    if ( cn_cookies_accepted() ) {
      setcookie( 'ga-disable-'.get_ua(), 'false', 0, "https://stackoverflow.com/" );
    } else {
      if(!isset($_COOKIE['ga-disable-'.get_ua()])) {
        setCookie( 'ga-disable-'.get_ua(), 'true' );
      }
    }
  }
}

Una vez el ga-disable-UA-10877870-45 se establece en falso, en la página siguiente se cargan las cookies de Google Analytics: _ga, _gaty gid. (Después de hacer clic en el botón de consentimiento, la página se vuelve a cargar automáticamente a través de la configuración del complemento Aviso de cookies).

El problema que tengo es con el cliente. Chrome, Safari y Opera (y todos sus navegadores privados) funcionan como se esperaba: Aceptar aviso, recargas de página, se establecen cookies de Google Analytics. Firefox también funciona como se esperaba, pero la navegación privada de Firefox no establece las cookies de Google Analytics hasta una solicitud de página adicional. Eso significa que incluso después de que la página se vuelva a cargar automáticamente, tengo que actualizar la página una vez más. Esto es consistente entre mis dos MacBooks.

Estoy permitiendo cookies y no estoy bloqueando el seguimiento, entonces, ¿por qué la navegación privada de Firefox actúa de esta manera?

  • De acuerdo a esta página: “Las cookies establecidas en las ventanas privadas se guardan temporalmente en la memoria, separadas de las cookies de las ventanas normales, y se descartan al final de su sesión privada”

    – Jamie_D

    18 de noviembre de 2018 a las 12:26

@Jamie_D estaba en lo correcto al identificar el problema:

De acuerdo con esta página: “Las cookies configuradas en ventanas privadas se guardan temporalmente en la memoria, separadas de las cookies de ventana normales, y se descartan al final de su sesión privada”.

Debido a que las cookies no aparecían en las herramientas de desarrollo, la solución fue ingresar el siguiente JavaScript en la consola:

unescape(document.cookie.split('; '));

Fuente: https://support.mozilla.org/en-US/questions/1031619#answer-672435

Se devolvieron las cookies esperadas, incluidas _ga, _gaty _gid.

Verifiqué dos veces que Google Analytics extraía los datos correctos en tiempo real y todo se ve bien.

Entonces, para ser claros, la navegación privada de Firefox no requirió 2 cargas de página para configurar las cookies… Firefox simplemente no mostraba que estaban configuradas en las herramientas de desarrollo.

  • El código en esta respuesta ya no parece funcionar, al menos para mí usando Firefox 64.0.2 en OSX, como document.cookie devuelve una cadena vacía. Las cookies aún se guardan en la memoria, aunque son un poco más difíciles de inspeccionar

    – Kevlarr

    10 de febrero de 2019 a las 1:23

  • Borre eso, estaba obteniendo cadenas vacías porque las cookies en cuestión son HttpOnly, lo que significa que no hay acceso desde JS

    – Kevlarr

    15 de febrero de 2019 a las 3:35

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad