Chrome no elimina las cookies de sesión


188

Estoy tratando de configurar la cookie de sesión en javascript de esta manera:

document.cookie = 'name=alex; path=/'

Pero Chrome no lo elimina incluso si salgo del navegador y lo vuelvo a iniciar.

Revisé Firefox y Opera y ambos funcionan según lo previsto: eliminan la cookie de sesión al salir del navegador.

¿Chrome solo ignora las reglas de vencimiento?

Revisé varios sistemas operativos y descubrí que la cookie de sesión se elimina en Chrome en Windows XP y Ubuntu, pero NO en Mac OSX Lion.


1
Era exactamente como en mi publicación, es decir, sin vencimiento, no estoy seguro acerca de Httponly. No estoy tratando de eliminarlo a mano. El problema es que los navegadores deberían eliminarlo al salir, pero Chrome simplemente no lo hace.
Mgs

>>> y descubrí que la cookie de sesión se elimina en Chrome en Windows XP. No. En Windows XP, Chrome tampoco elimina las cookies. Ahora uso Windows XP y he encontrado su pregunta porque tengo el mismo problema. La única diferencia es que uso ZF2 y configuro las opciones de sesión a través del paquete Session. Pero es la forma habitual de php de todos modos, ini_set("session.cookie_lifetime", 0)y 'remember_me_seconds' => 1. Pero no ayuda. Firefox funciona bien, pero Chrome no.
Verde

Respuestas:


222

3
Y traté de formatear bien mi comentario con saltos de línea, pero el sistema tonto eliminó esos saltos de línea también ... ¡Vamos, Stackoverflow, haz un mejor sistema! Estoy pasando tiempo haciendo que mis comentarios sean legibles, para ser de gran ayuda para los lectores, y luego lo arruinas primero al creer tontamente que soy un spammer y luego al eliminar los saltos de línea.
Jesper

2
Nota: puede encontrar exactamente el mismo problema en Firefox si tiene la opción "Mostrar mis ventanas y pestañas de la última vez" para el menú desplegable "Cuando se inicia Firefox" en las opciones. Por la misma razón. Por diseño, las cookies de sesión se retienen para ayudar a mantener el flujo de trabajo en caso de un bloqueo del navegador.
webnesto

40
Sip. Chrome y FF rompen la funcionalidad de cookies de sesión debido a esto. Para Chrome, se informó el problema: code.google.com/p/chromium/issues/detail?id=128513 y se marcó WONTFIX. Obviamente, Google no se preocupa por seguir los estándares web y los agujeros de seguridad en Chrome, y tampoco lo hace FF. Ver error FF (al menos no cerrado): bugzilla.mozilla.org/show_bug.cgi?id=443354 Qué triste estado para estos dos navegadores.
lucian303

44
w3.org/Protocols/rfc2109/rfc2109 : Max-Age El comportamiento predeterminado es descartar la cookie cuando sale el agente de usuario.
lucian303

2
@ lucian303, si bien esto parece una violación de los estándares, no creo que pueda "continuar navegando desde la última vez" sin "mantener viva la cookie de sesión". Opera, rekonq e IE9 (a través del enlace "Reabrir la última sesión" en la página Nueva pestaña), por ejemplo, implemente el primero sin el segundo. Como resultado, dichos navegadores pueden mostrarle páginas almacenadas en caché que indican erróneamente que todavía está conectado y / o que ha bloqueado el token de protección CSRF.
sayap

25

Acabo de tener el mismo problema con una cookie que caducó al "Finalizar sesión de navegación".

Lamentablemente no fue así, así que jugué un poco con la configuración del navegador.

Resultó que la característica que recuerda las pestañas abiertas cuando se cierra el navegador era la raíz del problema. (La función se denomina "Al iniciar" - "Continuar donde la dejé". Al menos en la versión actual de Chrome).

Esto también sucede con Opera y Firefox.


¡Esto resolvió el problema de inmediato para mí! Es bueno saber por qué las cosas suceden como lo hacen :)
reflejos rápidos

55
Inaceptable. No quiero que Chrome olvide qué ventanas estaban abiertas, porque a menudo salgo accidentalmente de Chrome con muchas pestañas abiertas. (Gracias OS X por permitirme desplazar una ventana que no tiene foco, lo que me lleva a pensar que sí tiene foco. Pero, una historia diferente). Si tengo que volver a iniciar sesión, que así sea. No cerrar sesión cuando dejo deliberadamente hace que sea difícil asegurarse de que todavía no he iniciado sesión, lo que puede ser un GRAN problema de seguridad.
Michael

55
Al menos esta opción no está habilitada de forma predeterminada. Esta "función" también se menciona en la Ayuda de Google : "Chrome también restaurará sus datos de navegación y cookies de sesión ". OMI, esto debería ser una subopción adicional en "Continuar donde lo dejé".
MrWhite

Por cierto, esto ya no parece ser un "problema" con Opera (probé Opera 22, aunque no he notado que sea un problema para al menos una o dos versiones). Firefox 29 restaura las cookies de sesión cuando se marca la casilla "Mostrar mis ventanas y pestañas de la última vez" correspondiente (según la documentación).
MrWhite

2
@Michael Lo que no tiene mucho sentido ya que la mayoría de los sitios web que usan sesiones no le permitirán volver a la página en la que estaba si se ha desconectado. Entonces, ¿desea que el navegador continúe donde lo dejó o no?
Deji

21

Acabo de tener este problema. Noté que incluso después de cerrar mi navegador, tenía muchos procesos de Chrome ejecutándose. Resulta que estos eran de mi extensión de Chrome.

En la configuración avanzada, desmarqué 'Continue running background apps when Google Chrome is closed'y mis cookies de sesión comenzaron a funcionar como deberían.

Todavía es una molestia para todos los desarrolladores que hemos estado codificando esperando que las cookies de sesión se borren cuando el usuario termine de navegar.


Por lo general, las "aplicaciones en segundo plano" no tienen nada que ver con la persistencia de las cookies de sesión (a menos que tal vez tenga una extensión que recuerde las cookies de sesión). La opción "Continuar donde lo dejé" en la configuración también restaura las cookies de sesión (como se menciona en otra respuesta).
MrWhite

1
¡Está funcionando, después de deshabilitar esa opción, borro mis cookies de sesión!
Walid Ammar

De hecho, esta es otra razón que hace que las cookies de sesión no se eliminen. Gracias.
L-Four

10

Esto tal vez porque Chrome todavía se está ejecutando en segundo plano después de cerrar el navegador. Intente deshabilitar esta función haciendo lo siguiente:

  1. Abra Chrome: // configuración /
  2. Haga clic en "Mostrar configuración avanzada ..."
  3. Vaya a la sección Sistema y desactive "Continuar ejecutando aplicaciones en segundo plano cuando Google Chrome esté cerrado". Esto obligará a Chrome a cerrarse por completo y luego eliminará las cookies de sesión.

Sin embargo, creo que Chrome debería verificar y eliminar las cookies de sesión anteriores cuando comience en lugar de cerrarse.


10

Tuve que ambos, sin marcar, en la configuración avanzada de Chrome:

  • 'Continuar ejecutando aplicaciones en segundo plano cuando Google Chrome está cerrado'
  • "Continuar donde lo dejé", "Al iniciar"

Esto debería votarse más alto, o la respuesta principal debería editarse para incluir el punto "ejecución de aplicaciones en segundo plano". Esto me afectó. Desactivar "Continuar donde lo dejé" no lo solucionó. También tuve que desactivar "Continuar ejecutando aplicaciones en segundo plano cuando Google Chrome está cerrado". Luego, mis cookies de sesión se eliminaron correctamente cuando cerré Chrome.
Matt Welke

Creo que esta es la mejor respuesta.
L-Four

3

Una alternativa simple es usar el nuevo objeto sessionStorage . Según los comentarios, si ha marcado 'continuar donde lo dejé', sessionStorage persistirá entre reinicios.


9
No, persiste entre reinicios, si ha marcado "Continuar donde lo dejé".
Olli

TimDog: "sessionStorage persistirá entre reinicios", @Olli "No, persiste entre reinicios". Chicos, ¿están de acuerdo o discuten? No entiendo :) Ah, espera, lo entiendo ...
naXa

2

Tuve el mismo problema con "document.cookie" en Windows 8.1, la única forma en que Chrome elimina la cookie es cerrarla desde el administrador de tareas (no es una forma muy sofisticada), así que decidí administrar las cookies desde el backend o usar algo como "js-cookie".


1

¿Has intentado eliminar la extensión de Hangouts en Google Chrome? porque obliga a Chrome a seguir ejecutándose incluso si cierras todas las ventanas.

También estaba enfrentando el problema pero se resolvió ahora.


1

Ir chrome://settings/content/cookies?search=cookies

Habilitar Clear cookies and site data when you quit Chrome .

Trabajó para mi


-2

Si configura el dominio para la cookie de sesión php, los navegadores parecen mantenerlo durante 30 segundos más o menos. No parece importar si cierra la pestaña o la ventana del navegador.

Entonces, si está administrando sesiones usando algo como lo siguiente, puede estar causando que la cookie se cuelgue en el navegador por más tiempo de lo esperado.

ini_set("session.cookie_domain", 'www.domain.com');

La única forma en que he encontrado para deshacerme de la cookie colgada es eliminar la línea de código que establece el dominio de la cookie de sesión. También ten cuidado con la función session_set_cookie_params (). El prefijo de punto del dominio tampoco parece tener relación con el problema.

Esto podría ser un error de php ya que php envía una cookie de sesión (es decir PHPSESSID=b855ed53d007a42a1d0d798d958e42c9) en el encabezado después de que la sesión ha sido destruida. O podría ser un problema de propagación del servidor, pero no lo creo, ya que mi prueba se realizó en servidores privados.


-2

Acabo de tener este problema de que Chrome almacene una ID de sesión, pero no me gusta la idea de deshabilitar la opción de continuar donde lo dejé. Miré las cookies del sitio web y encontré una cookie de ID de sesión para la página de inicio de sesión. Eliminar eso no corrigió mi problema. Busco el dominio y descubrí que había otra cookie de ID de sesión en el dominio. Eliminar ambas cookies de ID de sesión solucionó manualmente el problema y no cerré y volví a abrir el navegador que podría haber restaurado las cookies.



-8

Google Chrome tiene un problema si configura y desactiva la cookie de forma incorrecta. Este es el código PHP. Pensé que esto te dará una idea.

Establecer cookie

setcookie('userLoggedIn', 1, 0, PATH);

Manera incorrecta y no funcionará (observe que falta RUTA)

setcookie('userLoggedIn', 0, time()-3600);

La forma correcta soluciona el problema en Google Chrome

setcookie('userLoggedIn', 0, time()-3600, PATH);

1
La pregunta no es sobre una cookie incorrecta.
John K
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.