header HTTP, когда сервер отвечает
Сервер высылает куки-информацию клиенту в шапке/ 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 КВ.
value это последовательность символов, кроме
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 не специфицируется, кука может пересылаться по любому каналу.
A зарезервированные слова
В этом приложении содержится список зарезервированных слов JavaScript.
Эти слова не могут использоваться как имена переменных, функций, методов или объектов JavaScript. Некоторые из этих слов уже используются в JavaScript; другие зарезервированы на будущее.
B Значения цвета
Строковые литералы из этого приложения могут использоваться для специфицирования цветов в JavaScript-свойствах alinkColor, bgColor, fgColor, linkColor, vLinkColor и в методе fontcolor.
Например, Вы можете использовать эти строковые литералы для установки значения цвета тэгов HTML:
<BODY BGCOLOR="bisque">
или
<FONT COLOR="blue">color me blue</FONT>
Вместо строковых значений для специфицирования цвета Вы можете использовать 16-ричные значения red, green и blue из таблицы.
ЦветRed/КрасныйGreen/ЗелёныйBlue/Голубой
aliceblue |
F0 | F8 | FF |
antiquewhite | FA | EB |
D7 |
aqua | 00 | FF |
FF |
aquamarine | 7F | FF |
D4 |
azure | F0 |
FF | FF |
beige |
F5 | F5 | DC |
bisque | FF | E4 | C4
|
black | 00 |
00 | 00 |
blanchedalmond |
FF | EB | CD |
blue | 00 | 00 | FF
|
blueviolet | 8A |
2B | E2 |
brown |
A5 | 2A | 2A |
burlywood | DE | B8 |
87 |
cadetblue | 5F |
9E | A0 |
chartreuse |
7F | FF | 00 |
chocolate | D2 | 69 | 1E
|
coral | FF |
7F | 50 |
cornflowerblue |
64 | 95 | ED |
cornsilk | FF | F8 |
DC |
crimson | DC |
14 | 3C |
cyan |
00 | FF | FF |
darkblue | 00 | 00 |
8B |
darkcyan | 00 |
8B | 8B |
darkgoldenrod |
B8 | 86 | 0B |
darkgray | A9 | A9 |
A9 |
darkgreen | 00 |
64 | 00 |
darkkhaki |
BD | B7 | 6B |
darkmagenta | 8B | 00 |
8B |
darkolivegreen | 55 |
6B | 2F |
darkorange |
FF | 8C | 00 |
darkorchid | 99 | 32 |
CC |
darkred | 8B |
00 | 00 |
darksalmon |
E9 | 96 | 7A |
darkseagreen | 8F | BC |
8F |
darkslateblue | 48 |
3D | 8B |
darkslategray |
2F | 4F | 4F |
darkturquoise | 00 | CE |
D1 |
darkviolet | 94 |
00 | D3 |
deeppink |
FF | 14 | 93 |
deepskyblue | 00 | BF |
FF |
dimgray | 69 |
69 | 69 |
dodgerblue |
1E | 90 | FF
|
firebrick | B2 |
22 | 22 |
floralwhite |
FF | FA | F0 |
forestgreen | 22 | 8B |
22 |
fuchsia | FF |
00 | FF |
gainsboro |
DC | DC | DC |
ghostwhite | F8 | F8 |
FF |
gold | FF |
D7 | 00 |
goldenrod |
DA | A5 | 20 |
gray | 80 | 80 |
80 |
green | 00 |
80 | 00 |
greenyellow |
AD | FF | 2F |
honeydew | F0 | FF |
F0 |
hotpink | FF |
69 | B4 |
indianred |
CD | 5C | 5C |
indigo | 4B | 00 |
82 |
ivory | FF |
FF | F0 |
khaki |
F0 | E6 | 8C |
lavender | E6 | E6 |
FA |
lavenderblush | FF |
F0 | F5 |
lawngreen |
7C | FC | 00 |
lemonchiffon | FF | FA |
CD |
lightblue | AD |
D8 | E6 |
lightcoral |
F0 | 80 | 80 |
lightcyan | E0 | FF |
FF |
lightgoldenrodyellow | FA |
FA | D2 |
lightgreen |
90 | EE | 90 |
lightgrey | D3 | D3 |
D3 |
lightpink | FF |
B6 | C1 |
lightsalmon |
FF | A0 | 7A |
lightseagreen | 20 | B2 |
AA |
lightskyblue | 87 |
CE | FA |
lightslategray |
77 | 88 | 99 |
lightsteelblue | B0 | C4 |
DE |
lightyellow | FF |
FF | E0 |
lime |
00 | FF | 00 |
limegreen | 32 | CD |
32 |
linen | FA |
F0 | E6 |
magenta |
FF | 00 | FF |
maroon | 80 | 00 |
00 |
mediumaquamarine | 66 |
CD | AA |
mediumblue |
00 | 00 | CD |
mediumorchid | BA | 55 |
D3 |
mediumpurple | 93 |
70 | DB |
mediumseagreen |
3C | B3 | 71 |
mediumslateblue | 7B | 68 |
EE |
mediumspringgreen | 00 |
FA | 9A |
mediumturquoise |
48 | D1 | CC |
mediumvioletred | C7 | 15 |
85 |
midnightblue | 19 |
19 | 70 |
mintcream |
F5 | FF | FA |
mistyrose | FF | E4 |
E1 |
moccasin | FF |
E4 | B5 |
navajowhite |
FF | DE | AD |
navy | 00 | 00 |
80 |
oldlace | FD |
F5 | E6 |
olive |
80 | 80 | 00 |
olivedrab | 6B | 8E |
23 |
orange | FF |
A5 | 00 |
orangered |
FF | 45 | 00 |
orchid | DA | 70 |
D6 |
palegoldenrod | EE |
E8 | AA |
palegreen |
98 | FB | 98 |
paleturquoise | AF | EE |
EE |
palevioletred | DB |
70 | 93 |
papayawhip |
FF | EF | D5 |
peachpuff | FF | DA |
B9 |
peru | CD |
85 | 3F |
pink |
FF | C0 | CB |
plum | DD | A0 |
DD |
powderblue | B0 |
E0 | E6 |
purple |
80 | 00 | 80 |
red | FF | 00 |
00 |
rosybrown | BC |
8F | 8F |
royalblue |
41 | 69 | E1 |
saddlebrown | 8B | 45 |
13 |
salmon | FA |
80 | 72 |
sandybrown |
F4 | A4 | 60 |
seagreen | 2E | 8B |
57 |
seashell | FF |
F5 | EE |
sienna |
A0 | 52 | 2D |
silver | C0 | C0 |
C0 |
skyblue | 87 |
CE | EB |
slateblue |
6A | 5A | CD |
slategray | 70 | 80 |
90 |
snow | FF |
FA | FA |
springgreen |
00 | FF | 7F |
steelblue | 46 | 82 |
B4 |
tan | D2 |
B4 | 8C |
teal |
00 | 80 | 80 |
thistle | D8 | BF |
D8 |
tomato | FF |
63 | 47 |
turquoise |
40 | E0 | D0 |
violet | EE | 82 |
EE |
wheat | F5 |
DE | B3 |
white |
FF | FF | FF |
whitesmoke | F5 | F5 |
F5 |
yellow | FF |
FF | 00 |
yellowgreen |
9A | CD | 32 |
С Куки netscape
Кука/cookie это небольшой блок информации, сохраняемый на клиентской машине в файле cookies.txt. В этом приложении рассматривается реализация кук в клиентском браузере Navigator; это не формальная спецификация или стандарт.
Вы можете управлять куками:
Явно в CGI-программе.
Программно - в клиентском JavaScript, используя свойство cookie объекта document.
Прозрачно - в серверном JavaScript через объект client, используя клиентскую технику работы с куками.
Об использовании кук в серверном JavaScript см. книгу Серверный JavaScript. Руководство.
Мы рассмотрим формат информации куки в шапке/header HTTP и обсудим использование программ CGI и JavaScript для манипулирования куками.
Следующие примеры иллюстрируют последовательность транзакций
Следующие примеры иллюстрируют последовательность транзакций типичных 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
Программа CGI использует следующий синтаксис
Программа CGI использует следующий синтаксис для добавления куки-информации в шапку HTTP:
Set-Cookie:
name=value
[;EXPIRES=dateValue]
[;DOMAIN=domainName]
[;PATH=pathName]
[;SECURE]