Клиентский JavaScript. Справочник

         

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; другие зарезервированы на будущее.
 

abstract
boolean
break
byte
case
catch
char
class
const
continue
debugger
default
delete
do
double
else
enum
export
extends
false
final
finally
float
for
function
goto
if
implements
import
in
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
super
switch
synchronized
this
throw
throws
transient
true
try
typeof
var
void
volatile
while
with



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 F0F8FF
antiquewhiteFAEB D7
aqua00FF FF
aquamarine7FFF D4
azureF0 FFFF
beige F5F5DC
bisqueFFE4C4

black00 0000
blanchedalmond FFEBCD
blue0000FF

blueviolet8A 2BE2
brown A52A2A
burlywoodDEB8 87
cadetblue5F 9EA0
chartreuse 7FFF00
chocolateD2691E

coralFF 7F50
cornflowerblue 6495ED
cornsilkFFF8 DC
crimsonDC 143C
cyan 00FFFF
darkblue0000 8B
darkcyan00 8B8B
darkgoldenrod B8860B
darkgrayA9A9 A9
darkgreen00 6400
darkkhaki BDB76B
darkmagenta8B00 8B
darkolivegreen55 6B2F
darkorange FF8C00
darkorchid9932 CC
darkred8B 0000
darksalmon E9967A
darkseagreen8FBC 8F
darkslateblue48 3D8B
darkslategray 2F4F4F
darkturquoise00CE D1
darkviolet94 00D3
deeppink FF1493
deepskyblue00BF FF
dimgray69 6969
dodgerblue 1E90FF

firebrickB2 2222
floralwhite FFFAF0
forestgreen228B 22
fuchsiaFF 00FF
gainsboro DCDCDC
ghostwhiteF8F8 FF
goldFF D700
goldenrod DAA520
gray8080 80
green00 8000
greenyellow ADFF2F
honeydewF0FF F0
hotpinkFF 69B4
indianred CD5C5C
indigo4B00 82
ivoryFF FFF0
khaki F0E68C
lavenderE6E6 FA
lavenderblushFF F0F5
lawngreen 7CFC00
lemonchiffonFFFA CD
lightblueAD D8E6
lightcoral F08080
lightcyanE0FF FF
lightgoldenrodyellowFA FAD2
lightgreen 90EE90
lightgreyD3D3 D3
lightpinkFF B6C1
lightsalmon FFA07A
lightseagreen20B2 AA
lightskyblue87 CEFA
lightslategray 778899
lightsteelblueB0C4 DE
lightyellowFF FFE0
lime 00FF00
limegreen32CD 32
linenFA F0E6
magenta FF00FF
maroon8000 00
mediumaquamarine66 CDAA
mediumblue 0000CD
mediumorchidBA55 D3
mediumpurple93 70DB
mediumseagreen 3CB371
mediumslateblue7B68 EE
mediumspringgreen00 FA9A
mediumturquoise 48D1CC
mediumvioletredC715 85
midnightblue19 1970
mintcream F5FFFA
mistyroseFFE4 E1
moccasinFF E4B5
navajowhite FFDEAD
navy0000 80
oldlaceFD F5E6
olive 808000
olivedrab6B8E 23
orangeFF A500
orangered FF4500
orchidDA70 D6
palegoldenrodEE E8AA
palegreen 98FB98
paleturquoiseAFEE EE
palevioletredDB 7093
papayawhip FFEFD5
peachpuffFFDA B9
peruCD 853F
pink FFC0CB
plumDDA0 DD
powderblueB0 E0E6
purple 800080
redFF00 00
rosybrownBC 8F8F
royalblue 4169E1
saddlebrown8B45 13
salmonFA 8072
sandybrown F4A460
seagreen2E8B 57
seashellFF F5EE
sienna A0522D
silverC0C0 C0
skyblue87 CEEB
slateblue 6A5ACD
slategray7080 90
snowFF FAFA
springgreen 00FF7F
steelblue4682 B4
tanD2 B48C
teal 008080
thistleD8BF D8
tomatoFF 6347
turquoise 40E0D0
violetEE82 EE
wheatF5 DEB3
white FFFFFF
whitesmokeF5F5 F5
yellowFF FF00
yellowgreen 9ACD32



С Куки 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]