Cómo documenta exactamente.cookie de trabajo?


Si consigo que Chrome me muestre document.cookie entrando en la consola y escribiendo document.cookie; me dará, digamos:

"name=John; gender=male";

Pero luego si escribo, digamos, {[3] } todo lo que hace es agregar 5; al comienzo de la cadena, así que obtengo:

"5; name=John; gender=male";

Si intento document.cookie = null; entonces ni siquiera hace nada.

¿Cómo puede ser esto? Es una variable, ¿no? Entonces, ¿por qué el operador de asignación no funciona como debería? ¿Es en realidad sólo un poco de azúcar sintáctica en lugar de un real variable? Y si es así, ¿qué es precisamente el azúcar que cubre?

Author: Brad Koch, 2011-07-22

3 answers

document.cookie tiene un comportamiento muy especial. Como has visto, asignarle agrega (o actualiza) una cookie (o varias cookies), en lugar de reemplazar todas las cookies. Es muy inusual.

Lea todo sobre esto:

 32
Author: T.J. Crowder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-18 18:13:36

¿Por qué no echar un vistazo a MDN?

La cadena en el lado derecho del operador de asignación a document.cookies debe ser una lista separada por punto y coma de pares clave-valor, es decir, document.cookie = "aKey=5" establecerá/actualizará la cookie aKey.

Así que sí, document.cookie muestra un comportamiento especial.

 6
Author: Alexander Gessler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-12 21:05:33

Aquí hay un ejemplo de su " problema". Además, dice lo siguiente:

Puede eliminar una cookie simplemente actualizando su tiempo de caducidad a cero.

 3
Author: Sascha Galley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-22 15:07:52