Книга: JavaScript. Подробное руководство, 6-е издание

20.2.3. Чтение cookies

20.2.3. Чтение cookies

Когда свойство cookie используется в JavaScript-выражении, возвращаемое им значение содержит все cookies, относящиеся к текущему документу. Эта строка представляет собой список пар имя = значение, разделенных точками с запятой и пробелами. Значение не включает какие-либо атрибуты, которые могли быть установлены для cookie. При работе со свойством document.cookie обычно приходится использовать метод split(), чтобы разбить его значение на отдельные пары имя/значение.

После извлечения значения cookie из свойства cookie его требуется интерпретировать, основываясь на том формате или кодировке, которые были указаны создателем cookie. Например, cookie можно передать функции decodeURIComponent(), а затем функции JSON.parse().

В примере 20.1 определяется функция getCookie(), которая анализирует свойство document.cookie и возвращает объект, свойства которого соответствуют парам имя/значение всех cookies в документе.

Пример 20.1. Анализ свойства document.cookie

// Возвращает cookies документа в виде объекта с парами имя/значение.
// Предполагается, что значения cookie кодируются с помощью
// функции encodeURIComponent().
function getCookies() {
  var cookies = {}; // Возвращаемый объект
  var all = document.cookie; // Получить все cookies в одной строке
  if (all === "") // Если получена пустая строка,
    return cookies; // вернуть пустой объект
  var list = all.split("; "); // Разбить на пары имя/значение
  for(var і = 0; і < list.length; i++) { // Для каждого cookie
    var cookie = list[і];
    var p = cookie.indexOf(”="); // Отыскать первый знак =
    var name = cookie, substrings, p); // Получить имя cookie
    var value = cookie.substring(p+1); // Получить значение cookie
    value = decodeURIComponent(value); // Декодировать значение
    cookies[name] = value; // Сохранить имя и значение в объекте
  }
  return cookies;
}

Оглавление книги


Генерация: 1.144. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз