Работа с Cookies

Получить доступ к cookies можно через следующий код:

document.cookie

Код выше вернёт примерно следующую строчку:

"cookie_name=Сохранённая+информация; cookie_second=Вторая+сохранённая+информация"

Добавить или изменить cookie в JavaScript можно через следующий код:

document.cookie = "cookie_third=Значение"

Код выше не заменяет текущее значение document.cookie, а добавляет новое значение, если указанного cookie не существует.

Созданная cookie будет доступна только в JavaScript. В серверных языках, например в PHP, получить cookie из JavaScript нельзя. При этом, само свойство document.cookie содержит cookies, созданные в PHP.

Разбить cookies на массив можно через метод split().

var cookie = {};
document.cookie.split("; ").map(function(item){ var split = item.split("="); cookie[split[0]] = split[1];});

cookie['cookie_name'];   // Сохранённая+информация
cookie['cookie_second']; // Вторая+сохранённая+информация

Не все cookies доступны через метод document.cookie. Некоторые cookies создаются с параметром httponly (например в PHP), который запрещает чтение cookies через JavaScript.

Страницы для cookies

По умолчанию, cookies создаются для всех страниц текущего раздела. Например, если текущая страница «post/javascript», то cookies будут доступны для «post/any-page» и просто для «post/».

Указать страницу сохранения cookies можно через параметр path.

// создание cookie для страницы «/post/page»
document.cookie = "name=Значение; path=/post/page"

Код выше создаст cookie, которая будет доступна только на странице «post/page». Причём необязательно находиться на самой странице «post/page» чтобы создать эту cookie, её можно создать на любой странице.

Чтобы создать cookie, которая будет доступна на указанных подразделах, можно использовать код ниже:

// создание cookie для страниц «/post/»
document.cookie = "name=Значение; path=/post/"

Код выше создаст cookie для всех подстраниц «post/». Например «post/javascript» или «post/any-page».

Чтобы создать cookie, которая будет доступна на всех страницах, можно использовать «path=/».

// создание cookie для всех страниц
document.cookie = "name=Значение; path=/"

Продолжительность cookie

По умолчанию cookie, созданная через JavaScript, хранится до закрытия браузера.

Указать продолжительность cookie можно через параметр expires.

document.cookie = "name=Значение; expires=Sat, 05 May 2018 18:58:39 GMT"

Лёгкий способ указать срок активности cookie можно через объект Date().

// Указать срок активности cookie на один день
var date = new Date;
date.setDate(date.getDate() + 1);

document.cookie = "name=Значение; expires=" + date.toUTCString();

Удалить cookie

Чтобы удалить cookie, надо указать её путь, в которой он был создан и продолжительность меньше текущей даты.

var date = new Date(0);
document.cookie = "name=Значение; path=/post/page; expires=" + date.toUTCString();

Стоит обратить внимание, что если cookie была создана на «path=/post/page», то надо указывать именно этот путь. Если указать «path=/», то cookie не удалится.

Проверить, что у пользователя включены cookie

Проверить, что у пользователя включены cookie можно через команду navigator.cookieEnabled, которая возвращает булево значение (true или false).