Первый способ: создание cookie расширением сервера Web
Для того чтобы создать cookie первым способом, расширение сервера Web обычно добавляет в заголовок HTTP динамически создаваемого документа HTML поле с именем Set-Cookie. В этом поле определяются имена и значения параметров cookie.
Когда расширение сервера Web вызывается из документа HTML, имеющего cookie, параметры cookie предаются этому расширению через поле Cookie заголовка HTTP и могут быть проанализированы.
Заголовок HTTP, предназначенный для создания cookie, выглядит следующим образом:
Set-Cookie: Имя=Значение; expires=Дата_GMT;
path=Адрес_URL; domain=Домен; secure
Описание отдельных полей заголовка Set-Cookie приведено ниже:
Поле | Описание | ||
Имя | Произвольное имя параметра, определенного в cookie. Здесь вы можете использовать любую строку, лишь бы в ней не было пробелов, запятых и двоеточий. В том случае, когда имя должно содержать перечисленные выше символы, используйте кодировку URL | ||
Значение | Текстовая строка значений параметров. В этой строке не должно быть пробелов, запятых и двоеточий, поэтому вы должны использовать для нее кодировку URL | ||
expires | Дата автоматического удаления cookie по Гринвичу. Если эта дата не указана, а параметр expires отсутствует, cookie будет удалено сразу после того, как браузер закончит сеанс связи с сервером Web | ||
domain | Доменная часть адреса URL, для которой действует данный cookie. Если этот параметр не указан, то по умолчанию используется доменный адрес URL документа HTML, где был установлен cookie | ||
path | Часть адреса URL, задающая путь к документу HTML, для которой действует данный cookie. Если этот параметр не указан, то по умолчанию используется адрес URL документа HTML, где был установлен cookie | ||
secure | Если указано это поле, данные cookie необходимо предавать только с использованием защищенного протокола SSL. Такой протокол используется серверами HTTPS |
Все поля, кроме первых двух (Имя и Значение), необязательны.
Дата должна быть записана в формате День_недели, ДД-Мес-ГГ ЧЧ:ММ:СС GMT, где:
- День_недели - английское трехбуквенное сокращение названия дня недели (например, Mon);
- ДД - номер дня недели;
- Мес - английское трехбуквенное сокращение названия месяца (например, Jun);
- ГГ - две последние цифры года;
- ЧЧ - часы;
- ММ - минуты;
- СС - секунды
Например, дата может быть указана так:
Mon, 07-Jun-93 14:45:00 GMT
Сделаем небольшое замечание относительно полей domain и path, определяющих условие, при котором выполняется установка cookie.
Когда браузер загружает документ HTML с сервера Web и среди заголовков HTTP этого документа присутствует заголовок Set-Cookie, он проверяет возможность установки cookie. В процессе проверки анализируется адрес URL, откуда был загружен этот документ, а также содержимое полей domain и path.
Если эти поля не указаны, то по умолчанию считаются, что они соответствуют адресу URL, по которому находится загруженный документ HTML. В этом случае выполняется установка cookie.
В том случае, когда указано поле domain, установка cookie выполняется только тогда, когда документ был загружен с сервера Web, принадлежащего данному домену.
С помощью параметра path можно установить ограничение на адреса URL в рамках домена, для которых выполняется установка cookie. При этом значение “/” соответствует всем адресам данного домена.
Одновременно сервер Web может создать несколько параметров cookie, включив в заголовок документа HTML несколько заголовков Set-Cookie.