
Глава
6.
Структура
и
описание протокола HTTP
203
wjiw/statQ в UNIX). Если ресурс не изменился с указанного времени Sun, 21
May 2000 07:00:25 GMT, сервер просто вернет ответ 304 Not Modified. Для
резко меняющихся ресурсов это поможет избежать ненужных пересылок дан-
ных. Серверу не нужно повторно генерировать ресурс, и время ожидания на
стороне пользователя снижается, поскольку клиент может получить содержи-
мое локально.
• Referer. Поле заголовка Referer^ дает возможность клиенту включать URI ре-
сурса, от которого был получен запрашиваемый URI. Например, предполо-
жим, что пользователь посещает Web-страницу http://www.cnn.com и щелка-
ет на гиперссылке на ресурс http://www.disasterrelief.org/Disasters/world-
glance.html на этой странице. Заголовок Referer в запросе, передаваемом на
http://www.disasterrelief.org, будет содержать строку http://www.cnn.com:
GET /Disasters/worldglance.html HTTP/1.0
Referer: http://www.cnn.com
Польза от применения поля Referer состоит в выявлении устаревших гипер-
ссылок. Однако чаще всего оно становится источником нарушения конфи-
денциальности пользователя. Ранее (глава 2, раздел 2.6.4 и глава 3, раз-
дел 3.7) мы говорили о проблемах нарушения конфиденциальности, связан-
ных с применением cookies и посредников. Поле Referer представляет собой
заголовок, который может быть использован исходным сервером для отсле-
живания действий пользователя через журнал регистрации.
Есть и худшие ситуации. Предположим, что с помощью формы, исполь-
зующей метод GET (см. раздел 6.2.2) передается номер кредитной карты
пользователя. Допустим, что сама форма передается безопасным способом
(скажем, с применением SSL), а полученная после выполнения запроса
с формой страница содержит ссылку на другую страницу, возможно, находя-
щуюся на сервере S. Теперь, если пользователь переходит к этой странице,
журнал регистрации сервера S будет содержать запись с полем Referer, со-
держащим номер кредитной карты пользователя.
Кроме того, сервер может осуществлять проверку поля Referer с целью
отклонения запросов на определенные ресурсы, если ссылки на ресурсы на-
ходились на страницах, не контролируемых сервером. Например, предполо-
жим, что ссылка на встроенгюе изображение onlymine.gif, изначально при-
надлежащее ресурсу А, было скопировано в другой документ, В. Теперь, если
браузер попытается отобразить документ В, он должен сформировать запрос
на ресурс onlymine.gif и включить в запрос заголовок Referer с нолем значе-
ния, соответствующим ресурсу В. Сервер может отказать в обработке запро-
са, поскольку поле Referer не содержит А.
• User-Agent. Поле User-Agent может быть использовано для включения ин-
формации о версии программного обеспечения браузера, версии операцион-
ной системы компьютера клиента и, возможно, каких-либо сведений об аппа-
ратной конфигурации. Вот примеры заголовков User-Agent:
User-Agent: Mozilla/4.03 (Macintosh; I; 68K, Nav)
User-Agent: Mozilla/4.04 [en] C-WorldNet (Win95: I)
1
К ряду забавных моментов, связанных с HTTP, можно отнести орфографические ошиб-
ки,
например Referer вместо
Referrer,
с которыми приходится мириться, поскольку они
уже получили широкое распространение.