Una forma habitual de comprobar la compatibilidad con cookies es mediante un redireccionamiento.
Es una buena idea hacer esto solo cuando el usuario está intentando hacer algo que inicia una sesión, como iniciar sesión o agregar algo a su carrito. De lo contrario, dependiendo de cómo lo maneje, potencialmente está bloqueando el acceso a todo su sitio para usuarios, o bots, que no admiten cookies.
En primer lugar, el servidor verifica los datos de inicio de sesión de forma normal: si los datos de inicio de sesión son incorrectos, el usuario recibe esa información de forma normal. Si es correcto, entonces el servidor responde inmediatamente con una cookie y una redirección a una página que está diseñada para buscar esa cookie, que puede ser la misma URL pero con alguna marca agregada a la cadena de consulta. Si esa segunda página no recibe la cookie, el usuario recibe un mensaje que indica que no puede iniciar sesión porque las cookies están deshabilitadas en su navegador.
Si ya está siguiendo el patrón Post-Redirect-Get para su formulario de inicio de sesión, entonces esta configuración y verificación de la cookie no agrega ninguna solicitud adicional; la cookie se puede configurar durante la redirección existente y verificada por el destino que se carga después de la redirección.
Ahora, por qué solo hago una prueba de cookies después de una acción iniciada por el usuario que no sea en cada carga de página. He visto sitios que implementan una prueba de cookies en cada página, sin darme cuenta de que esto tendrá efectos en cosas como los motores de búsqueda que intentan rastrear el sitio. Es decir, si un usuario tiene las cookies habilitadas, entonces la cookie de prueba se configura una vez, por lo que solo tiene que soportar un redireccionamiento en la primera página que solicitan y a partir de ese momento no hay redireccionamientos. Sin embargo, para cualquier navegador u otro agente de usuario, como un motor de búsqueda, que no devuelve cookies, cada página podría simplemente resultar en una redirección.
Otro método para verificar el soporte de cookies es con Javascript; de esta manera, no se necesita necesariamente una redirección; puede escribir una cookie y leerla prácticamente de inmediato para ver si se almacenó y luego se recuperó. La desventaja de esto es que se ejecuta en un script en el lado del cliente , es decir, si aún desea que el mensaje sobre si las cookies son compatibles regrese al servidor, entonces aún debe organizarlo, como con una llamada Ajax.
Para mi propia aplicación, implemento alguna protección para los ataques de 'Iniciar sesión CSRF', una variante de los ataques CSRF, estableciendo una cookie que contiene un token aleatorio en la pantalla de inicio de sesión antes de que el usuario inicie sesión, y verificando ese token cuando el usuario envía su inicio de sesión. detalles. Obtenga más información sobre el CSRF de inicio de sesión de Google. Un efecto secundario de esto es que en el momento en que inician sesión, puedo verificar la existencia de esa cookie; no es necesario un redireccionamiento adicional.