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


Зачем нужны cookies?

Андрей Аликберов

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

Другой интересный факт: в Сети прибавились посетительницы, и сейчас web-серферов женщин совсем не намного меньше, чем мужчин. Большинство из них - студенты и молодежь, хотя в последнее время в WWW стали заглядывать и пенсионеры.

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

Откуда возник термин "cookie", никто достоверно не знает, хотя считается, что во времена зарождения Unix-систем где-то использовалось словосочетание Magic Cookies. Имелись в виду "квитанции" (token, ticket), которыми обменивались программы. С распространением Internet cookie превратилось в межплатформенное явление, знакомое многочисленным пользователям.

Для большинства из работающих с Сетью взаимодействие с "печеньем" заключается, в первую очередь, во включении или отключении соответствующих опций в броузере. Обычно приходится обращать на них внимание в тех случаях, когда хочется остаться неопознанным для сервера, на который требуется попасть, или, наоборот, когда необходимо, чтобы сервер "узнал" вас. Как правило, это почтовые сервера, сервера крупных компаний, Web-чаты или сетевые магазины.

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

Зачем нужны cookies

Cookies является решением одной из наследственных проблем протокола передачи гипертекста (HTTP) - непостоянства соединения клиента и сервера. Иначе говоря, после того, как броузер сделал запрос, а сервер выдал соответствующий ответ, транзакция завершается и сервер "забывает" о пользователе, а каждый следующий запрос воспринимает, как от нового пользователя.

Частичное решение этой проблемы дало включение cookie в HTTP-протокол. Используя "печенье", можно эмулировать сессию. Принцип эмуляции достаточно прост: при первом запросе устанавливается соответствующее значение cookie, которое записывается броузером пользователя, а при каждом последующем запросе считывается сервером и соответствующим образом обрабатывается.

Cookie - это небольшая порция текстовой информации, которую сервер передает броузеру. Броузер будет хранить и передавать ее серверу с каждым запросом как часть HTTP-заголовка. Некоторые значения cookie хранятся только в течение одной сессии, и удаляются после закрытия броузера. Другие, установленные на некоторый период времени, записываются в файл. Он обычно (например, в Netscape Communicator) называется "cookies.txt" и находится в рабочей директории установленного на компьютер броузера. Некоторые броузеры (например, Internet Explorer) хранят каждое значение cookie в отдельном файле в отведенной для этого директории. Так выглядят некоторые значения cookies на компьютере автора:

bizlink.ru TRUE/FALSE 915148488 u_irads_watch 627633

doubleclick.net TRUE/FALSE 1920499140 id 332666ae

www.webclub.ru FALSE/FALSE 913543999 visited yes

Как видно, cookie оставили Российский клуб Web-мастеров (www.webclub.ru), рекламные сети DoubleClick (www.doubleclick.com) и отечественная InterReklama (www.bizlink.ru/ir/).

Что можно сделать
с помощью cookie

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

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

И, наконец, механизм cookie применяется в рекламном бизнесе в Internet. Еще год назад платная реклама в Internet была довольно экзотической услугой, а сейчас этот бизнес уже устоялся и стремительно развивается. Однако рекламодатели начинают предъявлять более жесткие условия к оценке эффективности своих расходов. Cookies используются для таргетинга рекламы: определения целевой аудитории, например, по географическому положению пользователей; отслеживания интересов пользователей; учета количества показов и проходов сквозь баннеры.

Cookies используются еще в одной распространенной области - при настройке индивидуального интерфейса, так называемой персонализации. Примеры можно найти на крупных поисковых машинах, порталах (www.lycos.com, www.yahoo.com, www.start.com) и многих других.

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

Разобравшись с принципами действия и областью применения cookie, можно приступить и к изучению формата и синтаксиса, а также способов задания значений cookie.

Формат и синтаксис cookie

Задание сookie осуществляется с помощью команды Set-Cookie:

Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure

Минимальное описание поля Set-Cookie осуществляется с помощью параметра NAME:

Set-Cookie: NAME=VALUE;

NAME=VALUE - строка символов, исключая перевод строки, запятые и пробелы. NAME - имя cookie, VALUE - значение. Это необходимый параметр для задания "печенья".

expires=DATE - время хранения cookie, т. е. вместо DATE должна стоять дата в формате "expires=Monday, DD-Mon-YYYY HH:MM:SS GMT", после которой истекает время хранения cookie. Если этот атрибут не указан, то cookie хранится до закрытия броузера.

Использование параметра expires не гарантирует сохранность cookie в течение заданного периода времени, поскольку броузер может удалить запись из-за нехватки выделенного места или каких-либо других причин.

Надо иметь в виду, что броузер имеет определенные ограничения:

  • может храниться всего до 300 значений cookies;
  • величина cookie не может превышать 4 Кбайт;
  • одного сервера или домена может храниться до 20 значений cookie.

Если ограничение 300 или 20 превышается, то удаляется первая по времени запись. При превышении лимита объема в 4 Кбайт корректность значения cookie страдает - отрезается кусок записи (с ее начала), равный превышению объема.

domain=DOMAIN_NAME - домен, для которого значение cookie действительно. Например, "domain=cit-forum.com". В этом случае значение cookie будет действительно и для домена cit-forum.com, и для www.cit-forum.com. Но не радуйтесь: указания двух последних периодов доменных имен хватает только для доменов иерархии "COM", "EDU", "NET", "ORG", "GOV", "MIL" и "INT". Для обсуждаемых сейчас новых семи доменов первого уровня: "FIRM", "SHOP", "WEB", "ARTS", "REC", "INFO", "NOM", - вероятно, это условие сохранится. Для доменов иерархии "RU", например, придется указывать три периода.

Если этот атрибут опущен, то по умолчанию используется доменное имя сервера, на котором было задано значение cookie.

path=PATH - этот атрибут устанавливает подмножество документов, для которых действительно значение cookie. Например, указание "path=/win" приведет к тому, что значение cookie будет действительно для множества документов в директориях /win/ и /wings/ и для файлов в текущей директории с именами типа wind.html и windows.shtml. Для того чтобы cookie отсылались при каждом запросе к серверу, необходимо указать корневой каталог сервера, например, "path=/".

Если этот атрибут не указан, то значение cookie распространяется только на документы в той же директории, что и документ, в котором было установлено значение cookie.

secure - если стоит этот маркер, то информация cookie пересылается только через HTTPS (в защищенном режиме). Если secure не указан, то информация пересылается обычным способом.

Одновременно можно задавать несколько значений cookie.

Если cookie принимает новое значение при имеющемся уже в броузере cookie с совпадающими параметрами NAME, domain и path, то старое значение заменяется новым. В остальных случаях новые значения cookie добавляются к старым.

Когда запрашивается документ с HTTP-сервера, броузер проверяет свои cookie на предмет соответствия домену сервера и прочей информации. В случае, если найдены удовлетворяющие всем условиям значения cookie, броузер посылает их серверу в виде пары имя/значение:

Cookie: NAME1=VALUE1; NAME2= VALUE2 ...

Способы работы
со значениями cookie

Способ задания значений cookie зависит от того, как эти значения будут использоваться и какие имеются серверные ресурсы. Поскольку домашняя страничка обычно размещается на бесплатном сервере, и неизвестно, какое серверное ПО установлено на нем, для работы с "печеньем" стоит использовать один из двух простых и универсальных способов: через META-теги языка HTML или JavaScript. Любым способом можно задавать как одно, так и несколько значений одновременно. Сразу хочется предупредить: не забывайте об ограничениях по объему и количеству значений cookie, а также параметре domain, так как помимо основного доменного имени, у узла часто бывает несколько алиасов (alias).

Простейший способ выставить cookie - использовать соответствующий META-тег в контейнере <HEAD>... </HEAD> любого статического HTML-документа. В общем случае это выглядит следующим образом:

<META HTTP-EQUIV="Set-Cookie" CONTENT="NAME=value;
EXPIRES=date; DOMAIN=domain_name; PATH=path; SECURE">

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

Для считывания и обработки значений cookie лучше всего подойдет JavaScript. Единственный недостаток его использования заключается в том, что не все броузеры его поддерживают. Кроме того, написание скриптов на JavaScript, даже при использовании готовых образцов, требует навыков в программировании. Ниже приведены функции JavaScript, написанные Алексеем Александровым для скрипта "Органайзер", одного из лучших образцов программирования на JavaScript с использованием cookie. Поэтому мы рекомендуем посмотреть на работающий образец по данному адресу. Используя эти функции (см. примеры 3-5) можно производить с "печеньем" все необходимые операции: установки, изменения и удаления значения.

Совсем недавно автор этих строк написал систему рейтинга серверов для Российского Клуба Web-мастеров, которая использует механизм cookie для защиты от накрутки очков. В ней, задавая и анализируя значения cookie, скрипт либо не допускает пользователя до голосования (если отключены cookie в броузере или пользователь один раз уже проголосовал), либо разрешает голосовать (если соответствующее значение не задано). Обмануть такую систему можно, только стирая каждый раз файл cookies.txt. Конечно, можно было бы использовать log-файл голосования на узле, но возникали бы проблемы разделения доступа к файлу и замедление работы вследствие использования медленных дисковых операций.

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

Немного о проблемах, связанных
с использованием cookie

Главная проблема в том, что пользователи изначально не любят сообщать кому-либо информацию о себе и, отсюда недоверие к механизму работы cookies. Бытовали также слухи о том, что с помощью cookie можно прочесть любую информацию с любого компьютера. Это неправда, к тому же современные версии броузеров позволяют контролировать прием cookie или вовсе блокировать его. Кроме того, появилось множество специальных утилит для управления приемом cookie, так называемые Cookie Managers.

Другая сторона этой проблемы заключается в том, что на узлах Сети аккумулируются огромные массивы данных с персональной информацией, необходимые для коммерческих серверов. Вот здесь и возникают повышенные требования к защите от несанкционированного доступа к этим данным. Пользователи таких серверов должны быть уверены, что их имена, адреса электронной почты, телефонные номера и прочее, не попадут в чужие руки. Но так как на домашней страничке вы, пожалуй, будете выяснять не номер кредитки посетителя, а, к примеру, его любимые цвета или, на худой конец, имя и отчество, то этой информацией с вами, скорее всего, поделятся, и время, затраченное на написание сложных скриптов, не пропадет даром. Зато представьте, как будет приятно посетителю заходить на страничку, которая "узнает" его, обращаясь по имени и настраиваясь по его вкусу! Если добавить к этому интересное содержание, то у вашего сайта есть хорошие шансы попасть в рейтинги самых посещаемых мест в WWW.

Источник: http://www.submarine.ru


Copyright © 1999-2000гг. "Internet Zone" & Nik Romanov. nikspase@mail.ru, nikspase@hotmail.ru,  http://www.izone.com.ua/
Hosted by uCoz