Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:
*************************************************

20.2.1. Атрибуты cookie: срок хранения и область видимости

Помимо имени и значения каждый cookie имеет необязательные атрибуты, управляющие сроком его хранения и областью видимости. По умолчанию cookies являются временными - их значения сохраняются на период сеанса веб-броузера и теряются при закрытии броузера. Обратите внимание, что этот срок хранения не совпадает со сроком хранения данных в

sessionStorage
: доступность cookies не ограничивается единственным окном, поэтому период их хранения по умолчанию совпадает с периодом работы процесса броузера, а не какого-то одного окна. Чтобы cookie сохранялся после окончания сеанса, необходимо сообщить броузеру, как долго (в секундах) он должен храниться, указав значение атрибута max-age. Если указать срок хранения, броузер сохранит cookie в локальном файле и удалит его только по истечении срока хранения.

Видимость cookie ограничивается происхождением документа, как и при использовании хранилищ

localStorage
и
sessionStorage
, а также строкой пути к документу. Область видимости cookie может регулироваться посредством атрибутов
path
и
domain
. По умолчанию cookie связывается с создавшей его веб-страницей и доступен этой странице, а также другим страницам из того же каталога или любых его подкаталогов. Если, например, веб-страницаindex.html создаст cookie, то этот cookie будет также видим страницам http:// www.example.com/catalog/order.html ино невидим странице http://www.example.com/about.html.

Этого правила видимости, принятого по умолчанию, обычно вполне достаточно. Тем не менее иногда значения cookie требуется использовать на всем многостраничном веб-сайте независимо от того, какая страница создала cookie. Например, если пользователь ввел свой адрес в форму на одной странице, целесообразно было бы сохранить этот адрес как адрес по умолчанию. Тогда этим адресом можно будет воспользоваться при следующем посещении тем же пользователем этой страницы, а также при заполнении им совершенно другой формы на любой другой странице, где требуется ввести адрес, например для выставления счета. Для этого в cookie можно определить атрибут

path
. И тогда любая страница того же веб-сервера с URL-адресом, начинающимся с указанного значения, сможет использовать этот cookie. Например, если для cookie, установленного страницейв атрибуте
path
установлено значение «/catalog», этот cookie также будет виден для страницыА если атрибут
path
установлен в значение «/», то cookie будет видим для любой страницы на веб-сервере http://www.example.com.

Установка атрибута

path
в значение «/» определяет такую же область видимости cookie, как для хранилища
localStorage
, а также говорит о том, что броузер должен передавать имя и значение cookie на сервер при запросе любой веб-страницы с этого сайта. Имейте в виду, что атрибут path не должен восприниматься как своеобразный механизм управления доступом. Если веб-странице потребуется прочитать cookies, принадлежащие какой-то другой странице на том же веб-сайте, она может просто загрузить эту страницу в скрытый элемент
<iframe>
и прочитать все cookies, принадлежащие документу во фрейме. Политика общего происхождения (раздел 13.6.2) предотвращает подобное «подглядывание» за cookies, установленных веб-страницами с других сайтов, но оно считается вполне допустимым для документов с одного и того же сайта.

По умолчанию cookies доступны только страницам с общим происхождением. Однако большим веб-сайтам может потребоваться возможность совместного использования cookies несколькими поддоменами. Например, серверу order.examp-le.com может потребоваться прочитать значения cookie, установленного сервером

catalog.example.com. В этой ситуации поможет атрибут domain. Если cookie, созданный страницей с сервера catalog.example.com, имеет в атрибуте path значение «/», а В атрибуте domain - значение «.example.com», этот cookie будет доступен всем веб-страницам в поддоменах catalog.example.com, orders.example.com и в любых других поддоменах в домене example.com. Если атрибут domain не установлен, его значением по умолчанию будет имя веб-сервера, на котором находится страница. Обратите внимание, что в атрибут domain нельзя записать значение, отличающееся от домена вашего сервера.

Последний атрибут cookie - это логический атрибут с именем secure, определяющий, как значения cookie передаются по сети. По умолчанию cookie не защищен, т.е. передается по обычному незащищенному HTTP-соединению. Однако если cookie помечен как защищенный, он передается, только когда обмен между броузером и сервером организован по протоколу HTTPS или другому защищенному протоколу.

20.2.2. Сохранение cookies

Чтобы связать временное значение cookie с текущим документом, достаточно присвоить его свойству

cookie
строку следующего формата:

имя=значение

Например:

document.cookie = "version=" + encodeURIComponent(document.lastModified);

При следующем чтении свойства

cookie
сохраненная пара имя/значение будет включена в список cookies документа. Значения cookie не могут содержать точки с запятой, запятые или пробельные символы. По этой причине для кодирования значения перед сохранением его в cookie, возможно, потребуется использовать глобальную JavaScript-функцию
encodeURIComponent.
В этом случае при чтении значения cookie надо будет вызвать соответствующую функцию
decodeURIComponent.

Записанный таким способом cookie сохраняется в течение сеанса работы веб-броузера, но теряется при его закрытии пользователем. Чтобы создать cookie, сохраняющийся между сеансами броузера, необходимо указать срок его хранения (в секундах) с помощью атрибута

max-age
. Это можно сделать, присвоив свойству cookie строку следующего формата:

имя=значение; max-аgе=число_ секунд

Следующая функция устанавливает cookie с дополнительным атрибутом

max-аgе
:

  • Читать дальше
  • 1
  • ...
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: