Пользователь

Добро пожаловать,

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

Меню сайта




Ваше мнение
Как вы оцените наш сайт?

Замечательный
Хороший
Обычный
Плохой
Отвратительный


Результаты
Другие опросы

Всего голосов: 846
Комментарии: 10


Наши партнеры



Статистика




Programming books  Download software  Documentation  Scripts  Content Managment Systems(CMS)  Templates  Icon Sets  Articles  Contacts  Voting  Site Search




Книги-online



Куки Netscape Оглавление | Назад | Вперёд | Индекс

Приложение C
Куки Netscape

Кука/cookie это небольшой блок информации, сохраняемый на клиентской машине в файле cookiestxt.html.  В этом приложении рассматривается реализация кук в клиентском браузере Navigator; это не формальная спецификация или стандарт.

Вы можете управлять куками:

  • Явно в CGI-программе.
  • Программно - в клиентском JavaScript, используя свойство cookie объекта document.
  • Прозрачно - в серверном JavaScript через объект client, используя клиентскую технику работы с куками.

Об использовании кук в серверном  JavaScript см. книгу Серверный JavaScript. Руководство.

Мы рассмотрим формат информации куки в шапке/header HTTP и обсудим использование программ CGI и JavaScript для манипулирования куками.

Синтаксис

Программа CGI использует следующий синтаксис для добавления куки-информации в шапку HTTP:

Set-Cookie:
   name=value
   [;EXPIRES=dateValue]
   [;DOMAIN=domainName]
   [;PATH=pathName]
   [;SECURE]

Параметры

name=value это последовательность символов, кроме точки с запятой, запятой и пробела. Чтобы поместить неразрешённые символы в name или в value, используйте метод кодирования, такой как URL-style %XX encoding.

EXPIRES=dateValue специфицирует строку-дату, которая определяет период действия куки. При достижении даты окончания действия, кука не будет больше храниться или выдавать информацию. Если Вы не специфицировали dateValue, кука перестаёт действовать при окончании сессий пользователя.

Строка даты форматируется так:

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

где Wdy это день недели (например, Mon или Tues); DD это день/число месяца из двух цифр; Mon это трёхбуквенное сокращение названия месяца, как всегда - на английском языке, (например, Jan или Feb); YY это последние две цифры года; HH:MM:SS это часы, минуты и секунды, соответственно.

DOMAIN=domainName специфицирует атрибуты домена для правильной куки. См. "Определение Действующей Куки". Если Вы не специфицируете domainName, Navigator использует имя хоста сервера, который генерирует куку-ответ.

PATH=pathName специфицирует атрибуты пути для правильной куки. См. "Определение Действующей Куки". Если Вы не специфицируете значение pathName, Navigator использует путь документа, который создал свойство куки (или путь документа, описанный шапкой HTTP - для программирования CGI).

SECURE специфицирует, что кука пересылается только в том случае, если канал связи с хостом использует защиту. Только HTTPS (HTTP через SSL) серверы являются защищёнными в настоящее время. Если SECURE не специфицируется, кука может пересылаться по любому каналу.

Описание

Сервер высылает куки-информацию клиенту в шапке/header HTTP, когда сервер отвечает на запрос. В эту информацию включается описание диапазона URL, для которых она действует. Любые последующие HTTP-запросы, сделанные клиентом, которые попадают в этот диапазон, будут включать передачу текущего значения объекта статуса с клиента обратно на сервер.

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

Определение Действующей Куки.

При поиске в списке кук действующих кук, сравнение атрибутов домена в куке выполняется с именем хоста, с которого URL запрашивается.

Если атрибут домена совпадает с концом полного квалифицированного доменного имени хоста, совпавший путь проверяется на предмет необходимости отправки куки. Например, атрибут домена royalairways.com совпадает с именами хоста anvil.royalairways.com и ship.crate.royalairways.com.

Только хосты в специфицированном домене могут отправлять куки для домена. Кроме этого, доменные имена обязаны использовать как минимум две или три точки. Любой домен категорий COM, EDU, NET, ORG, GOV, MIL и INT требует только двух точек; все остальные домены требуют как минимум трёх точек.

PATH=pathName специфицирует URL'ы домена, для которых кука действует. Если кука уже прошла совпадение с доменом, то компонент pathname из URL сравнивается атрибутом path и, если совпадение есть, кука считается действующей и высылается вместе с URL запроса. Например, PATH=/foo совпадает с /foobar и с /foo/bar.html. Путь "/" это самый распространённый путь.

Синтаксис Шапки HTTP-Запроса Куки.

При запросе URL с HTTP-сервера браузер сопоставляет этот URL со всеми существующими куками. Если кука совпадает с URL запроса, строка, содержащая пары имя/значение всех совпадающих кук, включается в HTTP-запрос в следующем формате:

Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2 ...
Сохранение Кук.

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

Значение EXPIRES указывает, когда зачистить отображение. Navigator также удалит куку перед истечением срока её действия, если количество кук превысит внутренний лимит.

Кука с более высоким уровнем значения PATH не переопределяет более специфическое значение PATH. Если имеются несколько совпадений с различными путями, высылаются все совпавшие куки, как показано далее в примерах.

Скрипт CGI может удалить куку, возвращая куку с теми же значениями PATH и NAME и значением EXPIRES, которое было ранее. Поскольку PATH и NAME обязаны совпадать точно, для скрипта, отличного от создателя куки, будет затруднительно удалить её.

Специфицирование для Клиента.

При отправке куки на сервер, все куки с более специфицированным отображением пути высылаются до кук с менее специфицированным отображением пути. Например, кука "name1=foo" с отображением пути "/" должна быть выслана после куки "name1=foo2" с отображением пути "/bar", если они обе высылаются.

Navigator может получать и сохранять следующее:

  • общее количество кук: 300.
  • 4 килобайта на куку, где имя и OPAQUE_STRING комбинируются для образования лимита в 4 килобайта.
  • 20 кук на сервер или домен. Полностью специфицированные хосты и домены считаются отдельными экземплярами, и каждый имеет ограничение в 20 кук.

Когда лимит в 300 кук или 20 на сервер превзойдён, Navigator удаляет самые старые куки. Когда обнаруживается кука размером более 4 КВ, она должна быть усечена, но имя должно остаться без изменения, если оно менее 4 КВ.

Примеры

Следующие примеры иллюстрируют последовательность транзакций типичных CGI-программ.

Пример 1.

Клиент запрашивает документ и получает в ответе:

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

Если клиент запрашивает URL с путём "/" на данном сервере, он отправляет:

Cookie: CUSTOMER=WILE_E_COYOTE

Клиент запрашивает документ и получает в ответе:

Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/

Если клиент запрашивает URL с путём "/" на данном сервере, он отправляет:

Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001

Клиент получает:

Set-Cookie: SHIPPING=FEDEX; path=/foo

Если клиент запрашивает URL с путём "/" на данном сервере, он отправляет:

Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001

Если клиент запрашивает URL с путём "/foo" на данном сервере, он отправляет:

Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001;
   SHIPPING=FEDEX
Пример 2.

Здесь предполагается, что все отображения из Примера 1 очищены.

Клиент получает:

Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/

Если клиент запрашивает URL с путём "/" на данном сервере, он отправляет:

Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001

Клиент получает:

Set-Cookie: PART_NUMBER=RIDING_ROCKET_0023; path=/ammo

Если клиент запрашивает URL с путём "/ammo" на данном сервере, он отправляет:

Cookie: PART_NUMBER=RIDING_ROCKET_0023;
   PART_NUMBER=ROCKET_LAUNCHER_0001

Имеются две пары имя/значение с именем "PART_NUMBER" из-за наследования отображения "/" в дополнение к отображению "/ammo".

Оглавление | Назад | Вперёд | Индекс

Дата последнего обновления: 28 мая 1999 года.
Copyright (c) 1999 Netscape Communications Corporation





.



книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать