Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало пути.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
8 Мб
Скачать

Работа с cookie

Сookie является частью HTTP заголовка. Полное описание поля Set-Cookie HTTP заголовка:

Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; do­main=DOMAIN_NAME;

NAME=VALUE - NAME-имя cookie, VALUE - значение. expires=DATE - время до которого хранится cookie в формате "expires=Monday, DD-Mon-YYYY HH:MM:SS GMT". Если атрибут не указан, то cookie хранится в течение одного сеанса, до закрытия браузера.

domain=DOMAIN_NAME - домен, для которого значение cookie действительно. Если этот атрибут опущен, то по умолчанию используется доменное имя сервера, на котором было задано значение cookie.

path=PATH - этот атрибут устанавливает подмножество документов, для которых действительно значение cookie. Например, указание "path=/win" приведет к тому, что значение cookie будет действительно для множества документов в директории /win/, в директории /wings/ и файлов в текущей директории с именами типа wind.html и windows.shtml. Для того, чтобы cookie отсылались при каждом запросе к серверу, необ­ходимо указать корневой каталог сервера, например, "path=/".

Если этот атрибут не указан, то значение cookie распространяется только на документы в той же директории, что и документ, в котором было установлено значение cookie.

Синтаксис http заголовка для поля Cookie

Когда запрашивается документ с HTTP сервера, браузер проверяет свои cookie на предмет соответствия домену сервера. Если найдены удовлетворяющие всем условиям значения cookie, браузер посылает их в серверу в виде пары имя=значение:

Cookie: NAME1=OPAQUE_STRING1;NAME2=OPAQUE_STRING2 ...

Одновременно можно задавать несколько значений cookie.

В случае, если cookie принимает новое значение при имеющемся уже в браузере cookie с совпадающими параметрами NAME, domain и path, то старое значение заменяется новым. В остальных случаях новые значения cookie добавляются к старым.

Клиент (браузер) имеет следующие ограничения для cookies:

  • всего может храниться до 300 значений cookies

  • каждый cookie не может превышать 4Кбайт

  • с одного сервера или домена может храниться до 20 значе­ний cookie

Если ограничение 300 или 20 превышается, то удаляется первая по времени запись. При превышении лимита объема отрезается кусок записи (с начала этой записи) равный превышению объема.

В случае кеширования документов, например, proxy-сервером, поле Set-cookie HTTP заголовка не кэшируется.

Ниже приведено несколько примеров, иллюстрирующих использо­вание cookies

Пример 1. Управление подмножеством документов, для которых действительны значения cookie, и их сроком годности

Браузер запрашивает документ и принимает от сервера в ответ:

Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/; ex­pires=Wednesday, 09-Nov-99 23:12:40 GMT

Когда браузер запрашивает URL с путем "/" на этом сервере, он по­сылает серверу: Cookie: CUSTOMER=WILE_E_COYOTE

Браузер запрашивает документ и принимает от сервера в ответ: Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/

Когда браузер запрашивает URL с путем "/" на этом сервере, он по­сылает серверу уже два значения cookie: Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001

Сервер установил еще одно значение cookie, на этот раз с другой областью действия: Set-Cookie: SHIPPING=FEDEX; path=/foo

Теперь браузер, запрашивая URL с путем "/" на этом сервере, посы­лает лишь два значения cookie: Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001

и лишь при запросе браузером документов с путем "/foo" на этом сервере посылаются все три значения cookie: Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001; SHIPPING=FEDEX

Комментарий: после закрытия браузера в файле 'cookies.txt' оста­нется только одно значение cookie:

CUSTOMER=WILE_E_COYOTE

поскольку только для него установлен срок годности - 9 ноября 1999 года. Все остальные значения не будут сохранены.