Поделиться через


Файлы cookie HTTP

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

Существует два заголовка: Set-Cookie и Cookie, связанные с файлами cookie. Заголовок Set-Cookie отправляется сервером в ответ на HTTP-запрос, который используется для создания файла cookie в системе пользователя. Заголовок cookie включается клиентским приложением с HTTP-запросом, отправленным на сервер, если есть файл cookie с соответствующим доменом и путем.

Заголовок ответа Set-Cookie использует следующий формат:

Set-Cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; httponly]

Одна или несколько строковых последовательностей (разделенных точкой с запятой), которые соответствуют значению имени=шаблона, должны быть включены в заголовок ответа Set-Cookie. Сервер может использовать эти строковые последовательности для хранения данных в системе клиента.

Дата окончания срока действия задается с помощью формата dates=date, где дата окончания срока действия в Гринвиче (GMT). Если дата окончания срока действия не задана, срок действия файла cookie истекает после окончания сеанса Интернета. В противном случае файл cookie сохраняется в кэше до даты окончания срока действия. Дата должна использовать следующий формат:

DAY, DD-MMM-ГГГГ ЧЧ:ММ:SS GMT

DAY

День недели (Sun, Mon, Tue, Wed, Thu, Fri, Sat).

DD

День месяца (например, 01 в первый день месяца).

МММ

Трехбуквенное сокращение в течение месяца (январь, февраль, мар, апрель, май, июнь, июль, август, сентябрь, октябрь, ноябрь, декабрь).

Гггг

Год.

HH

Значение часа в военном времени (например, 22 будет 10:00 вечера).

MM

Значение минуты.

SS

Второе значение в вычитании.

Указание доменного имени с помощью шаблона domain=domain_name является необязательным для постоянных файлов cookie и используется для указания конца домена, для которого является допустимым файл cookie. Файлы cookie сеанса, указывающие домен, отклоняются. Если указанное доменное имя заканчивается запросом, файл cookie пытается сопоставить путь, чтобы определить, следует ли отправлять файл cookie. Например, если конечное доменное имя равно .microsoft.com, запросы к home.microsoft.com и support.microsoft.com будут проверяться, соответствует ли указанный шаблон запросу. Доменное имя должно содержать по крайней мере два или три периода, чтобы предотвратить настройку файлов cookie для широко используемых окончаний доменных имен, таких как .com, .edu и co.jp. Допустимые доменные имена будут похожи на .microsoft.com, .someschool.edu и .someserver.co.jp. Только узлы в указанном домене могут задать файл cookie для домена.

Задание пути, используя путь к шаблону=some_path, является необязательным и может использоваться для указания подмножества URL-адресов, для которых является допустимым файл cookie. Если указан путь, файл cookie считается допустимым для любых запросов, соответствующих указанному пути. Например, если указанный путь имеет значение /example, запросы с путями /examplecode и /example/code.htm будут соответствовать. Если путь не указан, предполагается, что путь к ресурсу, связанному с заголовком Set-Cookie.

Файл cookie также можно пометить как безопасный, который указывает, что файл cookie можно отправлять только на https-серверы.

Наконец, файл cookie можно пометить как HttpOnly (атрибуты не учитывает регистр), чтобы указать, что файл cookie не является скриптом и не должен быть показан клиентскому приложению по соображениям безопасности. В Windows Internet это означает, что файл cookie не может быть получен через функцию InternetGetCookie .

Заголовок cookie включается в любые HTTP-запросы, имеющие файл cookie, домен и путь которого соответствуют запросу. Заголовок cookie имеет следующий формат:

Cookie: <name>=<value> [;<name>=<value>]...

Одна или несколько строковых последовательностей с использованием значения имени=формата содержат сведения, заданные в файле cookie.

Создание файлов cookie

Существует три метода создания файлов cookie для Microsoft Internet Explorer: использование Microsoft JScript, использование функций WinINet и использование скрипта CGI. Все методы должны задать сведения, включенные в заголовок Set-Cookie.

Используя объектную модель Динамического HTML (DHTML), файлы cookie можно задать, вызвав свойство cookie объекта документа, как показано в следующем примере.

<SCRIPT language="JavaScript">
<!--
    document.cookie = "SomeValueName = Some_Value";
-->
</SCRIPT>

Файлы cookie можно создавать приложениями с помощью функции InternetSetCookie. Дополнительные сведения см. в разделе "Настройка файла cookie".

Файлы cookie создаются путем включения заголовка Set-Cookie в рамках скрипта CGI, включенного в HTTP-ответ на запрос.

В следующем примере приведен скрипт CGI, включающий заголовок Set-Cookie с помощью Perl.

print "Set-Cookie:Test=test_value; 
      expires=Sat, 01-Jan-2000 00:00:00 GMT;
      path=/;"

Примечание.

WinINet не поддерживает реализации сервера. Кроме того, его не следует использовать из службы. Для реализации или служб сервера используются службы HTTP Microsoft Windows (WinHTTP).