w3schools read from expires delete cookie con check javascript cookies duplicates frontend session-cookies

read - JavaScript Duplicate Cookies



npm js cookies (2)

¿Es por casualidad que la cookie original ya está presente en esto?

btoa(JSON.stringify(_decoded))

Causa de: document.cookie

document.cookie se define como:

una cadena que contiene una lista de todas las cookies separadas por punto y coma

Por lo tanto, me parece que está agregando un nuevo valor separado por punto y coma (nueva cookie) a esa lista (sin eliminar la cookie original)

Ok, no es eso, ¿has probado esto?

enlazar

Suena como el mismo problema que describiste

Estoy usando el marco Hapi para una aplicación Node.js, y el marco Hapi viene con sus propias herramientas de administración de cookies, que estoy usando para la autenticación.

El marco luego establece una cookie llamada session, con un valor json codificado a base64. El dominio está configurado en example.com (no.ejemplo.com)

Ahora, el problema radica cuando intento editar esta cookie del lado del cliente, haciendo lo siguiente

document.cookie = ''session='' + btoa(JSON.stringify(_decoded)) + "; path=/; domain=example.com";

Esto realmente establece una cookie duplicada con el dominio ''.example.com''

No le he pedido a JavaScript que anteponga el punto, y parece que no puedo deshacerme de él.

Supongo que es por este punto, que la cookie está siendo duplicada. ¿Cómo configuro el dominio sin que se anteponga automáticamente a un punto?

EDITAR

He renunciado a tratar de eliminar el punto inicial y, en cambio, trato de eliminar la cookie anterior y luego crear una nueva. ¡Sin embargo, todavía termino con cookies duplicadas!

  1. Navegue a / login e ingrese los detalles de inicio de sesión
  2. Redirigido a / cuenta y cookies establecidas por el servidor (SIN punto principal)
  3. Ejecute Javascript para eliminar y volver a crear la cookie
  4. 1 cookie ahora existe y tiene un punto principal antes del dominio

El comportamiento anterior es bueno, sin embargo, también sucede lo siguiente, que es malo

  1. Navegue a / login e ingrese los detalles de inicio de sesión
  2. Redirigido a / cuenta y cookies establecidas por el servidor (SIN punto principal)
  3. Navega a / example
  4. Ejecute Javascript para eliminar y volver a crear la cookie
  5. Ahora existen 2 cookies, una con el punto inicial (creado por JS) y otro sin (creado por el servidor)

El código que estoy usando es

API.Session = { Encoded : function () { return document.cookie.replace(/(?:(?:^|.*;/s*)session/s*/=/s*([^;]*).*$)|^.*$/, "$1")}, Decoded : function () { return JSON.parse(atob(this.Encoded()))}, Update : function (_decoded) { document.cookie = ''session=; expires=Thu, 01 Jan 1970 00:00:01 GMT;''; document.cookie = ''session='' + btoa(JSON.stringify(_decoded)) + "; path=/; domain=example.com;"; } } API.Helpers.ShowAdvancedOptions = function () { var s = API.Session.Decoded() s.ShowAdvancedOptions = true API.Session.Update(s) }


Para cualquier persona con un problema similar, esto finalmente se solucionó abandonando la propiedad del dominio por completo. Ver otra pregunta relacionada