Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 [ 102 ] 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

анализ программы.

• Строка 10. Имена всех пакетов cookie считываются с помощью функции cookie и но очереди нрисваиваются неременной $cookie.

• Строка 12. Выводится имя и значение каадого пакета cookie.

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

Более сложнге методы работы с файлами cookie

Основы работы с файлами cookie довольно просты. Сервер передает броузеру пакет cookie, а позже броузер возвращает его назад серверу. Хотя, конечно, существуют нюансы. Например, можно увеличить время жизни (или срок действия) файлов cookie, а также сделать его бесконечно большим. Такие файлы cookie называются перманентными. Их параметры можно задать так, чтобы они возвращались только по конкретному URL. (Данная настройка означает применение определенного

уровня безопасности.)

Сохранение файлов cookie

Все рассматриваемые нами до сих пор файлы cookie временно хранились в броузере: как только броузер завершал свою работу, файлы cookie автоматически удалялись. Использование временнтх файлов cookie вместо скрытых полей HTML-форм для передачи данных между несколькими формами вполне приемлемо. При новом запуске

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

В некоторых случаях возникает необходимость в постоянном хранении файлов cookie (речь идет о нескольких дня, неделях или даже месяцах). С помощью модуля COi в среде Perl создание таких файлов не составляет труда.

Чтобы установить дату истечения срока действия файла cookie, при его создании нужно использовать аргумент -expires. За ним должна следовать дата, определяющая конец срока действия файла cookie. Эту дату можно указать в нескольких форматах, как ноказано в табл. 2М.

Формат Пример Описание

ействия Файлов cookie

Количество

+30s

Через 30 секунд от данного момента

секунд

Количество минут

+15га

Через 15 минут от данного момента

Количество часов

+12h

Через 12 часов момента

Количество

Через 6 месяцев от данного момента

месяцев

Количество лет

Через 1 год отданного момента



Формат

Пример

Описание

Сиюминутно

Срок действия ленно

cookie истекает немед-

Любое

отрицательное время

-10m

Срок действия ленно

cookie истекает немед-

Точное время

Saturday,

23-Аид-200022:51:05ЕВГ

При указании точного времени вы должны использовать формат, приведенный в

табл. 21.1. Все другие возможные величины представляют собой интервал времени,

отсчитываемый от текущего времени. При их иснользовании нужное время (в виде) будет вычислено без вашего участия и отослано броузеру.

Следующая небольшая программа устанавливает в броузере файл cookie, срок действия которого истекает через восемь дней:

t!/usr/bin/perl -v

use CGI qw( rail) ;

use strict;

ny okie(-name => Favorite,

-v;alue => Iftnoe свсяб печзен с изклсм, -e55±ces=> +Bd );

print header (-cookie => $cxx3kie) ;

А теперь поговорим немного о грустном

В мире нет ничего постоянного. В том числе и постоянно действующих файлов cookie. Например, если ваща CGI-программа отправит броузеру некоторый пакет cookie, не следует полагать, что он будет активен в течение заданного (с момента установки) количества недель, месяцев или лет.

Как будет отмечено ниже, в разделе "Проблемы с файлами cookie" броузеры не обязаны хранить файлы cookie. На самом деле они вообще не обязаны их принимать,

причем вы даже не будете уведомлены о том, что файл cookie не принят.

Броузеры в любой момент могут избавиться от файлов cookie, чтобы освободить

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

Пользователи могут случайно или намеренно удалить файлы cookie. Если пользователь

устанавливает новую версию броузера или операционной системы, файлы cookie могут

быть попросту затерты или оказаться "не в том месте". Иногда файлы cookie исчезают даже при запуске другого броузера. Когда броузер неактивен, пакеты cookie обычно хранятся

в файле, который пользователи могут легко отредактировать, удалить или испортить.

Следовательно, хранение ценной информации в файлах cookie нельзя назвать удачной идеей. Любая информация, которую, казалось бы, стоило постоянно сохранять в пакете cookie, может быть легко заменена, удалена или испорчена. Речь идет о пользовательских параметрах настройки, именах и паролях, предназначенных для регистрации на Web-сервере, различного рода служебной информации, времени последнего посещения и др.



Если хотите знать, то большинство броузеров, находясь в неактивном состоянии, хранят пакеты cookie в обычных текстовых файлах, поэтому их можно легко просмотреть с помощью любого текстового редактора. Броузер Netscape хранит пакеты cookie в файле cookies.txt, расположенном в рабочем каталоге пользователя, который в разных операционных системах имеет разное имя. Броузер Internet Explorer хранит файлы cookie в каталоге \windows\Cookies.

Отправка файлов cookie другим серверам

Файлы cookie по умолчанию отправляются обратно только тому серверу, который их прислал. Иногда такая оправка пакетов cookie "по обратному адресу" отвечает вашему желанию, а иногда - совсем нет. Например, рассмотрим некоторый вымышленный Web-сервер congo.com, который предназначен для продажи книг. На нем работают два виртуальных Web-узла: www.congo.com и shopping.congo.com (рис. 21.3). Основной Web-узел (с адресов мдо.com) содержит всю информацию о компании, гиперсстлки на другие узлы и, что более важно, гиперсстлки на электронный книжный магазин.

Web-узел www.-congo.com содержит HTML-форму для регистрации и обрабатьшающую ее данные офамму. С их помощью пользователь может внести свое имя в списки почтовой расс1лки и сообщить серверу о том, какие книги его интересуют. Позже, при посещении узла www.congo.com, пользователь может прочитать о новых книгах, список которых составляется с учетом его интересов. Эт информация хранится в файлах cookie, но-лученных с узла www.congo.com и установленных в броузере пользователя (рис. 21.4).

Web-броузер

Web-узел

Web-узел

Гипер-

ссылка

Web-узел


wvw.congo.com

shopping.Congo.сош

Гиперссылка

Файл cookie, полученный отузла

wwv.congo.com

Wab-узел

Рис. 21.3. Два в1у£ш>кWeb-узла, связак вместе

WWV.Congo.con shopping.солдо.сош

Рис. 21.4. По умолчанию пакет cookie возвращаются только тому виртуальному b-узлу, от которого они получены

Проблема состоит в том, что, когда пользователь от узла www.congo.com переходит к электронному магазину по адресу shopping.congo.com, файлы cookie не отправляются серверу с адресом shopping.congo.com. Файлы cookie возвращаются только тому серверу, от которого они б1ли получены. Если пакет cookie б1л послан с адреса www.congo.com, то он не возвратится по адресу shopping.congo.com.

Так что же делать? Совершенно неприемлемо заставлять пользователя заполнять другую форму и отправлять ему новый cookie с сервера shopping.congo.com. Есть выход получше. Можно ограничить действие файла cookie конкретным именем домена. Например, когда с сервера www.congo.com посылается оригинальный пакет cookie, можно создать условия, при которых этот пакет мог бы отправиться к любому Web-узлу домена congo.com, как показано рте. 21.5.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 [ 102 ] 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122