Анимация
JavaScript
|
Главная Библионтека Web-броузер Файл cookie, полученный от узла www.congo.con
www.congo.com shopping.congo.com .www.foo.com Рис, 21.5. Файлы cookie, возвраемые к обоим b-узлам Эта технология реализуется на этапе создания пакета cookie с помощью аргумента -domain функции cookie: $соо)с1е=сооИе( -гапе => preferences, -ue mysteries, horror, :nain => cong.c}; print header (-cookie => $cookie); В приведенном выше фрагменте создается пакет cookie с именем preferences, действие которого ограничивается доменом congo.com. Теперь броузер сможет возвратить этот cookie любому Web-серверу, имя которого оканчивается на congo.com. Аргумент для задания домена должен иметь по крайней мере две части. Он не может являться доменом верхнего уровня, т.е. представлять собой имена .com или .net. Это сделано для того, чтобы броузер не передавал один и тот же пакет cookie всем серверам домена верхнего уровня. Создание персональных пакетов cookie Можно также ограничить область действия пакетов cookie заданной CGI-программой. По умолчанию после создания пакета cookie он будет возвращаться данному серверу по любому запрощенному броузером URL, включая URL, не содержащие CGI-программы. Рассмотрим, например, автомобильный Web-узел, схема которого показана на рис. 21.6. ]-Документы отдела продаж I-CGI-профаммы отдела продаж (каталог cgi-sales) -Документы производственного отдела I-CGI-профаммы производственного отдела (каталог cgi-engineering) Рис. 21.6. Дерево каталогов Web-узла, рассчитанного на многоплановое использование Имеет смысл размещать CGI-программы, связанные с отделом продаж, отдельно от CGI-профамм производственного подразделения. Если бы сбытовая CGI-профаммаус- тановила пакет cookie, то этот же пакет отправлялся бы и производственной COI- программе, и наоборот. Такое положение вещей, конечно же, нежелательно, и создателям COI-программ, предназначенных для обоих узлов, пришлось бы предпринять меры по координации действий во избежание конфликта по имени файлов cookie. Чтобы обойти эту проблему, можно использовать аргумент -path функции cookie. С его помощью указывается пугь (относящийся к URL верхнего уровня), по которому пакет cookie должен вернугься. Например, чтобы отправить пакет cookie, который будет возвращаться только к сбытовой CGl-профамме, можно использовать следующий фрагмент кода: Cookie будет видимым только для сбытовой $cookie=cookie{ -name => profile, -value => седан,люкс,двухдверный, -path => /cgi-sales); print header (-cookie => $cookie); Ho умолчанию файлы cookie возвращаются каждому узлу сервера, как если бы бьш использован параметр -path=>/. Для ограничения "области распространения" пакета cookie, т.е. чтобы он возвращался только заданной CGI-црограмме, в аргументе -path указывается URL CGI-программы. I Обеспечиваем возврат пакета cookie только этой программе $cookie=cookie( -name => profile, -value => седан.люксдвухдвервнй, -path => script name{) J; print header (-cookie => Scookie); Вы должны помнить из материала предьщущего занятия, что функция script naine модуля CGI возвращает часть адреса URL текущей CGI-црограммы. С ее помощью можно быстро создать пакет cookie, который будет возвращаться только программе, установившей этот cookie в броузере. Безопасность пакетов cookie Для передачи некоторых пакетов cookie может потребоваться установить безопасное соединение с сервером. Используя аргумент -secure функции cookie, можно организовать оправку пакетов cookie с броузера только в том случае, если соединение является безопасным. С помощью следующего фрагмента программы организуется отправка броузеру номера счета пользователя. Пакет cookie, содержащий подобную информацию, должен передаваться только через безопасное соединение. I Внимание! Оправляйте только через безопасное соединение $cookie=cookie( -name => account, -value => 00-12-3-122-1313, -secure => 1) ; print header (-cookie => $cookie); Чтение этого пакета cookie выполняется как обычно с помощью функции cookie. Если используется безопасное соединение и файл cookie установлен в броузере, то броузер при необходимости возвращает пакет cookie серверу. Считывание номера счета с броузера. $account number=cookie{account); Однако для установления факта безопасного соединения не следует слишком уж полагаться на этот метод. Не стоит также рассчитывать и на точность используемого номера счета. Помните, что именно пользователь управляет Web-броузером и его файлами cookie. Не исключено, что пакет cookie, содержащий закрытую информацию, может быть отправлен серверу через обычное (а не безопасное) соединение, да и номер счета может оказаться неверным. Проблемы с файлами cookie Прежде чем использовать файлы cookie в приложении, следует хорошо представлять себе проблемы, возможные при работе с ними. По этим причинам - а в будущем могут "всплыть" и другие неблагоприятные обстоятельства - желательно так проектировать свои Web-страницы и CGI-программы, чтобы они не зависели от файлов cookie. Например, если вы используете cookie для хранения параметров настройки пользователя, то в случае, если cookie будут недоступны, программа должна взять стандартный набор параметров, Другими словами, предусмотрите меры "оборонительного характера". Недолговечность файлов cookie Как уже упоминалось, файлы cookie весьма недолговечны. Они могут быть случайно удалены из системы или изменены пользователем, или просто отвергнуты броузером без всяких на то причин. Броузер может принять файл cookie, поработать с ним, а затем просто о нем "забыть", опять-таки без всяких видимых причин. Если вы установите перманентные файлы cookie с помощью аргумента -expire, броузер все равно может избавиться от них, не уведомив об этом пользователя. файлы cookie поддерживаются не всегда Пе секрет, что не все броузерьг поддерживают файлы cookie. Стандарты Internet, которые применяются к HTTP- и Web-трафику, совсем не гарантируют, что броузеры должны поддерживать работу с cookie. Сказанное выше вовсе не означает, что большинство броузеров не поддерживают cookie (все обстоит как раз наоборот). Такие броузеры, как Netscape (начиная с версии 1.1), Internet Explorer (все версии), Lynx, Opera и другие популярные Web-броузеры, поддерживают работу с файлами cookie. Однако в большинстве из них пользователь имеет возможность отключить поддержку cookie. Даже если вы использовали функцию useragent модуля GI и выяснили, что ваш броузер должен поддерживать файлы cookie, не стоит полагаться на эту информацию. Некоторые пользователи не любят cookie Возможно, с заголовком этого раздела трудно согласиться: причем здесь "нелюбовь" к файлам cookie? Путешествие по Web-пространсту по своей сути является анонимным занятием. Как отмечалось на предыдущих занятиях, Web-сервер не запоминает состояния запроса, присланного броузером. Это означает, что сервер не может отследить адрес броузера и определить, когда тот подключался к нему в последний раз и какую информацию запрашивал. Помните: один броузер необязательно должен представлять одного пользователя. Броузером могут пользоваться много людей в доме, офисе, Internet-кафе или библиотеке. Установка (или изменение) файла cookie для одного пользователя может в действительности привести к его установке для нескольких пользователей сразу. 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 |