HTTP. Часть 8. Указатель ссылки («Referer»)

Каждая HTTP транзакция  включает ссылочный заголовок (Referer), идентифицирующий документ на сервере, на который указывает текущий URL.

Да, термин «referer» ошибочен с точки зрения орфографии — опечатка была допущена в ранней версии стандарта HTTP и так и осталась по причинам обратной совместимости.

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

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

Программная установка значения поля ссылочного указателя из PHP-программы с последующим запросом документа с заданного Web-сайта (А), позволяет ввести в заблуждение этот сайт и заставить его думать, что ссылка была создана от (В) на (А), даже если такая ссылка не существует.

По этому не стоит доверять информации, находящейся в заголовке refer, так-как его легко подменить.

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

<a href="http://feedster.com/status.рhр">Состояние</a>

с Web-страницы, находящейся по URL-адресу:

http://gavnokod.com/обмен-ссылками/

Пользовательский клиент — Web-браузер — затем отправит на Web-сервер, находящийся на Feedster.com, следующую транзакцию:


GET /status.php HTTP/1.1
Host: feedster.com
Referer: http://gavnokod.com/обмен-ссылками/

При программировании на РНР доступ к значению ссылочного указателя (referer) предоставляет переменная $_SERVER:

$referer = $ SERVER['HTTP REFERER'];