Создание и использование cookies

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

Web-сайт может адаптировать содержание передаваемое пользователю, обратившемуся с запросом. Например, сайт электронной коммерции может возвратить Web-страницу с персонифицированным приветствием, которое содержит имя пользователя и рекомендации по возможным покупкам. Отслеживание пользователей дает возможность Web-сайту создавать нрофили отдельных пользователей и накапливать статистику о поведении пользователей при обращениях к сайту, например, средпее время, проведенное пользователем на сайте. Однако НТТР-запрос не предоставляет достаточной информации для идентификации пользователей. Множество пользователей могут просматривать Web-содержимое с одного компьютера или направлять свои запросы через один и тот же прокси-сервер. Кроме того, IP-адрес Компьютераможет время от времени изменяться, если провайдер Internet динамически предоставляет IP-адрес при соединении пользователя с Internet. Теоретически сайт может потребовать от пользователя указания уникального имени и, возможно, пароля для каждого запроса, по это будет обременительно для пользователя и вызвать у пего раздражение.

Вместо этого можно указать браузеру включать упикальпый cookie в каждый HTTP-запрос. Верпувшись к нашему примеру, предположим, что Web-сервер получает HTTP-запрос на ресурс http://www.bar.com/book.cgi?name=Noam+Chomsky. Запрос содержит cookie. Сервер вызывает сценарий /www/book/cgi и передает cookie через переменную окружения HTTP_COOKIE. Сценарий может использовать cookie для определения, какие рекламные объявления и предложения следует поместить на Web-страницу. Например, предложения могут быть связаны с книгами rio темам, соответствующим предыдущим покупкам данного пользователя. С точки зрепия браузера cookie представляет собой произвольную строку символов. Сценарий же, со своей сторопы, связывает с этой строкой определенный смысл. В простейшем случае строка представляет собой просто уникальный идентификатор пользователя, такой как имя пользователя или числовой код. Если запрос не содержит cookie, сценарий может создать повый cookie и включить его в заголовок сообщения-ответа

Set-Cookie: Customer="user17"; Version="1"; Path="/book" Последующие запросы от этого пользователя будут содержать cookie

Cookie: Customer="user17"; Version="1"; Path="/book"

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

В других ситуациях cookie может содержать дополнительную информацию, такую как имя пользователя и цвета, которым он отдает предпочтение. Это полезно для динамического создания Web-содержимого, настраиваемого на основе указанных атрибутов. Например, Web-страница может содержать персональное приветствие, включающее имя пользователя. Cookie может также содержать информацию о предыдущих действиях пользователя по просмотру Web-сайга. Храпеиие накопленной информации в cookie может избавить от необходимости сохранять информацию о пользователе во виутренней базе данных. Например, в cookie сайта элек- тропиой коммерции может храниться текущий список заказаипых пользователем товаров. Допустим, на сайте электронной коммерции пользователь заполняет различные формы для заказа книг. Пользователь добавляет кпигу в список заказап- пых товаров, что заставляет браузер послать HTTP-запрос, содержащий cookie, ассоциированный с этим Web-сайтом. Сценарий создает сообщение-ответ, включающий в себя заголовок

Set-Cookie: Order="Chomsky_Bio"; Version="1"; Path="/book"

Затем пользователь добавляет в список еще одну кпигу, что инициирует НТТР-за- прос, включающий в себя

Cookie: Customer="user17"; Version="1"; Path="/book" Order="Chomsky_Bio"; Version="1"; Path="/book"

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

Браузер трактует cookie как строку, передаваемую от имеии пользователя. Однако достаточно искушенные пользователи могут совместно использовать, создавать или модифицировать cookies. Предположим, что Web-сайт не позволяет пользователю загрузить определенный ресурс, если НТТР-запрос не содержит cookie. Пользователи могут сформировать свои собственные cookies, чтобы не допустить отслеживания сайтом их запросов. Кроме того, один пользователь может «позаимствовать» допустимый cookie у другого пользователя, модифицировав строку в серверном ответе Set-Cookie. Обратившись к предыдущему примеру, можно предположить, что искушенный пользователь отправит HTTP-запрос, содержащий cookie, заменив строку userl7 на user8. Здесь user8 соответствует корректному пользователю. Чтобы устранить подобные проблемы, cookie может включать некоторую зашифрованную информацию, не дающую пользователям возможность создавать корректные cookie от своего имени. Как часть обработки запроса сцепарий может осуществлять проверку cookie на корректность. хотя это предотвращает использование фиктивных cookies, все еще остается риск, что пользователь воспользуется cookie, принадлежащем кому-либо другому. Чтобы предотвратить подобные действия, для cookie может быть назначено время жизни. По истечении времени жизни cookie пользователю необходимо принять новый cookie для получения достуиа к сайту.

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100