Файлы cookie HTTP

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

Есть два заголовка, 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. Сервер может использовать эти последовательности строк для хранения данных в системе клиента.

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

ДЕНЬ, ДД-МММ-ГГГГЧЧ:ММ:СС GMT

ДЕНЬ

День недели (Вс, Пн, Вт, Ср, Чт, Пт, Сб).

DD

День месяца (например, 01 для первого дня месяца).

МММ

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

ГГГГ

Год.

ЧЧ

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

ММ

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

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 для домена.

Задание пути с помощью шаблона path=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 Обозреватель: с помощью Microsoft JScript, функций WinINet и скрипта CGI. Все методы должны задавать сведения, включенные в заголовок Set-Cookie.

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

<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 не поддерживает реализации сервера. Кроме того, его не следует использовать из службы. Для серверных реализаций или служб используйте службы Microsoft Windows HTTP (WinHTTP).