Как именно работает document.cookie? - PullRequest
33 голосов
/ 22 июля 2011

Если я получу Chrome, чтобы показать мне document.cookie, зайдя в консоль и набрав document.cookie;, он выдаст мне, скажем:

"name=John; gender=male";

Но тогда, если я наберу, скажем, document.cookie = 5;, все, что он делает, это добавляет 5; в начало строки, так что я получаю:

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

Если я попытаюсь document.cookie = null;, то он даже ничего не сделает.

Как это может быть? Это переменная, не так ли? Так почему же оператор присваивания не работает так, как должен? Это на самом деле просто кусочек синтаксического сахара, а не реальная переменная? И если да, то что именно покрывает сахар?

Ответы [ 3 ]

32 голосов
/ 22 июля 2011

document.cookie имеет очень особое поведение. Как вы видели, присвоение ему добавляет (или обновляет) cookie (или несколько файлов cookie) вместо , заменяющего всех файлов cookie. Это очень необычно.

Читать все об этом на MDN .

6 голосов
/ 22 июля 2011

Почему бы не взглянуть на MDN?

Строка в правой части оператора присваивания для document.cookies должна быть разделенным точкой с запятой списком пар ключ-значение, т. Е. document.cookie = "aKey=5" установит / обновит файл cookie aKey.

Так что да, document.cookie показывает особое поведение.

3 голосов
/ 22 июля 2011

Вот пример вашей " проблемы ". Также говорится следующее:

Вы можете удалить cookie, просто обновив время его истечения до ноль.

...