Как работают cookies. Формат cookie.
Создано: 27-03-2009 20:06:42 изменено: 21-01-2010 11:00:20  Метки: http
На уровне протокола HTTP обмен куками между броузером и сервером происходит следующим образом.

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

В дальнейшем, если эта cookie еще осталась в базе данных браузера (о времени их жизни см. ниже), при следующих запросах этого ресурса (и других ресурсов сервера, входящих в зону действия установленного cookie), браузер выдает эту cookie в поле заголовка HTTP-запроса 'Cookie'. Выдается только сама cookie (NAME=VALUE), без параметров. Если для данного ресурса действительны несколько cookies, то они выдаются в единственном поле 'Cookie' через '; ';

CGI-скриптам это поле запроса доступно через переменную среды CGI 'HTTP_COOKIE'

Полный формат устанавливаемой cookie выглядит следующим образом:

NAME=VALUE; [expires=DATE;] [path=PATH;] [domain=DOMAIN_NAME;] [secure]

Обязательной частью является собственно устанавливаемая cookie

NAME=VALUE

где NAME - имя ключа и VALUE - значение ключа.

Параметры cookie:

expires - срок годности. С помощью параметра expires сервер может указать "срок годности" (вернее, "последнюю дату годности") cookie. Если этот параметр не указан, то cookie существует в браузере до закрытия его окна. Это удобно, например, при доступе к сервисам, требующим аутентификации пользователя - в cookies записываются реквизиты доступа пользователя, пользователь "гуляет" по веб-интерфейсу с этими куками, затем закрывает окно - и реквизиты доступа удаляются с компьютера. А также - для любых других параметров, действительных только для данного сеанса - например, в файл-менеджерах удобно хранить в cookies текущий путь к файлам.

Дата и время должны быть указаны в виде:

Wdy, DD-Mon-YYYY HH:MM:SS GMT

Где Wdy - день недели и Mon - месяц (в английских трехбукенных сокращениях), DD - день месяца (два знака), YYYY - год, HH, MM, SS - часы, минуты и секунды (по 2 знака). Причем обратите внимание, что дата-время окончания действия cookie указываются "по Гринвичу".

Например,

Wed, 01-Jun-2005 23:00:00

domain - доменное имя, для которого действительна cookie. Например, domain=yourdomain.com;

По умолчанию - доменное имя выдавшего cookie сервера (сайта).

path - путь на сервере. Этот параметр устанавливает (ограничивает) область на веб-сервере, для которой действительна данная cookie. При поиске cookies для данного конкретного URL-а браузер сравнивает эту строку с началом пути на сервере. Скажем, если областью действия cookie должен быть весь сайт (от корневой папки и ниже), то path должен быть "/"; если же область действия cookies должна быть ограничена папкой cgi-bin, то path=/cgi-bin/.

Еще один момент - поскольку соответствие области действия cookie текущему запрашиваемому браузером ресурсу определяется по тому, соответствует ли начало текущего пути на сервере параметру path cookie, то, скажем, при path=/perl/ область действия cookie ограничена папкой perl на сервере, а при path=/perl cookie будет действовать также для всех папок и файлов, полный путь к которым начинается на "/perl" : скажем, для папок perl_doc, perl_scripts и файла perl.html, находящихся в корневой папке.

Если параметр path не указан, то областью действия cookie будет папка на сервере, в которой работает этот скрипт, и ниже, т.е. по умолчанию path=<папка_скрипта>

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