HTTP-Cookie

Материал из ПскоВики — сайта педагогического сообщества Псковской области

(Перенаправлено с Куки)
Перейти к: навигация, поиск

HTTP-Cookie или «куки» (от англ. cookie — печенье) — служебная информация, посылаемая веб-сервером на компьютер пользователя, для сохранения в браузере. Применяется для сохранения данных, специфичных для данного пользователя, и используемых веб-сервером для различных целей, в числе которых:

  • в системах с удаленным доступом — пароль, порождаемый сервером при первом подключении и отсылаемый пользователю; при последующих подключениях пользователь должен предоставлять серверу этот пароль
  • отслеживание состояния сессии

Содержание

Меxанизм HTTP-Cookie

Сервер может установить куки в ответ на запрос браузера. Для этого служит заголовок ответа (response header) Set-Cookie.

Куки также может быть установлена и самим браузером через JavaScript, который поддерживается большинством современных браузеров.

Браузер должен соxранять куки на период определенный для ее времени жизни и посылать куки на сервер в заголовке запроса (request header) Cookie. В запросе посылаются только те куки, которые соответствуют домену, пути и протоколу для которых куки была установлена.

Вышеизложенный механизм применим и для любого другого, отличного от браузера, клиентского приложения, обменивающегося информацией с веб-сервером по протоколу HTTP/HTTPS.


Синтаксис RESPONSE Header (Set-Cookie)

set-cookie      =       "Set-Cookie:" cookies
cookies         =       1#cookie
cookie          =       NAME "=" VALUE *("; " cookie-av)
NAME            =       attr
VALUE           =       value
cookie-av       =       "Comment" "=" value
                   |       "Expires" "=" value
                   |       "Domain" "=" value
                   |       "Max-Age" "=" value
                   |       "Path" "=" value
                   |       "Secure"
                   |       "Version" "=" 1*DIGIT

Неофициально заголовок ответа Set-Cookie начинается с "Set-Cookie:"(без кавычек). Каждый cookie начинается с пары NAME=VALUE ; за ней могут следовать еще пары NAME=VALUE, разделенные парой символов „точка с запятой, пробел“ — "; "(без кавычек). Синтаксис пары NAME=VALUE показан ранее. Спецификация атрибутов и их семантики идет далее. Пара NAME=VALUE должна идти первой в каждом cookie. Другие пары имя-значение могут идти далее в произвольном порядке. Если имя переменной встречается в cookie не 1 раз, поведение не определено.

NAME=VALUE

Обязательно. Именем пакета информации является NAME, значением - VALUE. имена, начинающиеся с символа "$"(без кавычек), зарезервированы и не должны использоваться в приложениях.

VALUE непрозрачно пользователю и может быть чем-угодно, что сервер хочет послать, возможно в отобранной сервером пригодной для печати ASCII - кодировке. "Непрозрачность" подразумевает, что содержание представляет интерес и уместность только серверу, пославшему cookie. Содержание может, фактически, быть удобочитаемым любому, кто исследует куку.

Comment=comment

Опционально. Поскольку cookie может содержать частную информацию о пользователе, атрибут Comment позволяет серверу документировать намеченное использование cookie. Пользователь может просмотреть информацию, чтобы решить, начать(продолжить) ли сессию с этим cookie.

Expires=date Опционально. Аттрибут Expires указывает время хранения cookie. Вместо date должна стоять дата в формате "expires=Sun, DD-Mon-YYYY HH:MM:SS GMT", после которой истекает время хранения cookie. Если этот атрибут не указан, то cookie хранится в течение одного сеанса, до закрытия броузера.

Domain=domain

Опционально. Аттрибут Domain определяет домен, для которого cookie является действительным. Явно указанный домен должен всегда начинаться с точки.

Max-Age=delta-seconds

Опционально. Атрибут Max-Age определяет время жизни cookie в секундах. Значение delta-seconds - десятичное положительное целое число. По истечении delta-seconds клиент должен отказаться от куки. Значение ноль означает, что от cookie нужно отказаться немедленно.

Path=path

Опционально. Атрибут Path определяет подмножество URL, к которым применяется cookie.

Secure

Опционально. Маркер Secure (значение не присваивается) предписывает использовать только (неуказанный) безопасный метод соединения с сервером всякий раз, когда необходимо послать назад этот cookie.

Программа (возможно под контролем пользователя) может определить, какой уровень безопасности соответствуюет для "secure" cookie. Атрибут Secure нужно понимать как совет по безопасности от сервера, указывающий, что в интересе сессии защитить содержание cookie.

Version=version

Обязательно. Атрибут Version, десятичное целое, идентифицирует, какой версии спецификации соответствует cookie. Для данной спецификации применяется Version=1.



Пример заголовкa ответа Set-Cookie:

Set-Cookie: sessionID=678893467800; path=/; domain=.mydomain.com
Set-Cookie: lang=ru

Синтаксис REQUEST Header (Cookie)

  cookie          =       "Cookie:" cookie-version
                          1*((";" | ",") cookie-value)
  cookie-value    =       NAME "=" VALUE [";" path] [";" domain]
  cookie-version  =       "$Version" "=" value
  NAME            =       attr
  VALUE           =       value
  path            =       "$Path" "=" value
  domain          =       "$Domain" "=" value


Заголовка запроса Cookie:

Cookie: sessionID=6788934678010; lang=js

Ссылки

Site Statistics