1. Главная страница » Компьютеры » Http referer что это

Http referer что это

Автор: | 16.12.2019

Содержание

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

Можно использовать такие языки, как JavaScript , PHP или ASP , чтобы считать информацию, содержащуюся в заголовке referer . А также добавить строки кода в файл .htaccess .

Сбор из referer с помощью PHP, JavaScript и ASP

PHP хранит информацию из referer в системной переменной HTTP_REFERER . Чтобы отобразить ее на PHP-странице , нужен следующий код:

Он проверяет, содержит ли переменная значение, а затем выводит его на экран. Вместо echo $_SERVER[‘HTTP_REFERER’]; можно задать строки скрипта таким образом, чтобы проверить различные referer .

JavaScript использует для чтения server http referer DOM . Так же, как в случае с PHP , нужно проверить, содержит ли заголовок значение. Если вы хотите управлять переменно, то сначала нужно установить данную переменную. Вот как отобразить referer на странице с помощью JavaScript .

Обратите внимание, что DOM использует альтернативное написание referer :

После этого можно использовать заголовок в скрипте с переменной myReferer .

ASP , как и PHP , устанавливает referer в качестве системной переменной. После чего нужно получить данную информацию следующим образом:

Также можно настроить скрипт с использование переменной myReferer .

После того как вы получили referer, что с ним делать?

После того, как вы получили информацию из HTTP referer , ее можно использовать в скриптах сайта. Например, чтобы вывести данные о том, откуда пришли посетители. Но гораздо интереснее использовать заголовок для отображения различной информации в зависимости от того, откуда пришли пользователи.

Общее приветствие

Можно вывести URL-адрес из referer в верхней части страницы в общем приветствии:

Приветствие посетителей из поисковой системы

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

Передача информации в формы

Если у вас на сайте есть ссылка, кликнув по которой посетители могут сообщить о проблемах с ресурсом. Люди часто сообщают о проблемах с веб-страницей без указания URL-адреса , на котором она возникла. Но можно использовать информацию из server http referer , чтобы предположить, о какой проблеме на какой странице идет речь.

Этот скрипт добавляет referer в скрытое поле формы:

Создание специального предложения для определенных посетителей

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

Направление посетителей на другую страницу

Также можно направить людей с определенным HTTP referer на другую страницу. Будьте осторожны, так как Google и другие поисковые системы могут расценить это, как введение в заблуждение, и наказать ваш сайт:

Блокирование пользователей по referer с помощью .htaccess

Если вы страдаете от referer-спама с одного домена, можно просто заблокировать его на вашем сайте. Если вы используете Apache с установленным mod_rewrite , тогда можно блокировать спам с помощью нескольких строк кода ( rewritecond http referrer , запрет входа без referrer ).

Читайте также:  Aomei partition assistant standard edition как пользоваться

Добавьте следующие строки в файл .htaccess :

Измените spammer.com на домен, который нужно заблокировать. Не забудьте добавить перед периодами в домене.

Не полагайтесь на referer

Помните, что возможна подмена HTTP referer , поэтому не стоит использовать его для важных страниц. Лучше применять его в качестве дополнения. Но если страница должна быть доступна только конкретным пользователям, то придется установить для нее пароль через файл htaccess .

Данная публикация представляет собой перевод статьи « How to Use the HTTP Referer » , подготовленной дружной командой проекта Интернет-технологии.ру

Referer — ошибочное написание англ. referrer — отсылающий, направляющий — который в протоколе HTTP — является одним из заголовков запроса клиента. Содержит URL источника запроса. Если перейти с одной страницы на другую, referer будет содержать адрес первой страницы. Часто на HTTP-сервере устанавливается программное обеспечение, анализирующее referer и извлекающее из него различную информацию. Так, например, владелец веб-сайта получает возможность узнать, по каким поисковым запросам, как часто и на какие именно страницы попадают люди. Если HTTP-клиент загружает с сервера картинку, представленную на какой-либо странице, то referer будет содержать адрес этой страницы. Некоторые HTTP-серверы перед выдачей картинки анализируют referer и не показывают картинку, если запрос приходит с другого сайта (а, например, показывают маленькое изображение-заглушку).

Любопытно, что написание английского слова referrer как referer — популярная ошибка. Настолько популярная, что вошла в официальные спецификации протокола HTTP.

Как уже упоминалось, бывает, что сервер отказывается выдавать нужное содержимое без определённой строки referer, поэтому многое клиентское ПО имеет возможность выставить эту строку вручную. Например, wget поддерживает опцию «—referer», позволяющую выставить нужную строку и получить доступ к требуемому содержимому веб-сервера.

Настройка referer в браузерах

  • В браузерах, основанных на Chromium, для отключения передачи Referer в свойствах ярлыка в поле объект надо добавить после пробела —no-referrers
  • В Mozilla Firefox работа с referer настраивается опциями « network.http.sendRefererHeader » и « network.http.sendSecureXSiteReferrer » в about:config. Также существует множество расширений для точной (например, посайтовой) настройки.
  • В Opera — Инструменты → Настройки → Дополнительно → Сеть → [ ] «Включить указание источника перехода».
  • В Opera 9.64 — Инструменты → Настройки → Дополнительно → Сеть → Отправлять данные о ссылающейся странице (F12 → Отправлять данные о ссылающейся странице).
  • В Opera 12 — Инструменты → Общие настройки → Расширенные → Сеть → Отправлять данные о ссылающейся странице (или F12 → Отправлять данные о ссылающейся странице).
  • В Comodo Dragon — Параметры → Дополнительные → Личные данные → Не позволять вебсайтам узнать, как вы на них попали (не посылать заголовок HTTP Referrer).

См. также

HTTP referer в Викиучебнике
  • Протокол HTTP
  • Заголовки HTTP

Ссылки

  • RFC 2616: Hypertext Transfer Protocol — HTTP/1.1
  • IRI — Internationalized Resource Identifiers

Что такое Wiki.sc Вики является главным информационным ресурсом в интернете. Она открыта для любого пользователя. Вики это библиотека, которая является общественной и многоязычной.

Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License.

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

Замечание

Просмотреть полный список элементов массива $_SERVER можно либо при помощи функции print_r(), которая распечатывает дамп массива либо при помощи функции phpinfo(), которая выводит информацию о PHP-интерпретаторе.

Элемент $_SERVER[‘DOCUMENT_ROOT’]

Элемент $_SERVER[‘DOCUMENT_ROOT’] содержит путь к корневой директории сервера, если скрипт выполняется в виртуальном хосте, в данном элементе указывается путь к корневой директории виртуального хоста. Т.е. в конфигурационном файле httpd.conf виртуальный хост имеет директиву DocumentRoot, которой присвоено значение "D:/main", элемент $_SERVER[‘DOCUMENT_ROOT’] будет содержать значение "D:main".

Элемент $_SERVER[‘HTTP_ACCEPT’]

В элементе $_SERVER[‘HTTP_ACCEPT’] описываются предпочтения клиента относительно типа документа. Содержимое этого элемента извлекается из HTTP-заголовка Accept, который присылает клиент серверу. Содержимое данного заголовка может выглядеть следующим образом

image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*

Читайте также:  Check cable connection на ноутбуке lenovo

Заголовок Accept позволяет уточнить медиа-тип, который предпочитает получить клиент в ответ на свой запрос. Этот заголовок позволяет сообщить серверу, что ответ ограничен небольшим множеством предпочитаемых типов.

Символ * используется для группирования типов в медиа-ряду. К примеру, символом */* задается использование всех типов, а обозначение type/* определяет использование всех подтипов выбранного типа type.

Замечание

Медиа-типы отделяются друг от друга запятыми.

Каждый медиа-ряд характеризуется также дополнительным набором параметров. Одним из них является так называемый относительный коэффициент предпочтения q, который принимает значения от 0 до 1, соответственно, от менее предпочитаемых типов к более предпочитаемым. Использование нескольких параметров q, позволяет клиенту сообщить серверу относительную степень предпочтения для того или иного медиа-типа.

Замечание

По умолчанию параметр q принимает значение 1. Кроме того, от медиа-типа он отделяется точкой с запятой.

Пример заголовка типа Accept:

Accept: audio/*; q=0.2, audio/basic

В данном заголовке первым идёт тип audio/* включающий в себя все музыкальные документы и характеризующийся коэффициентом предпочтения 0.2. Через запятую указан тип audio/basic, для которого коэффициент предпочтения не указан и принимает значение по умолчанию равное единице. Цитируя RFС2616 данный заголовок можно интерпретировать следующим образом: “Я предпочитаю тип audio/basic, но мне можно также слать документы любого другого audio-типа, если они будут доступны, после снижения коэффициента предпочтения более чем на 80 %”.

Пример может быть более сложным.

Accept: text/plain; q=0.5, text/html,
text/x-dvi; q=0.8, text/x-c

Замечание

Следует учитывать, что элемент $_SERVER[‘HTTP_ACCEPT’] содержит точно такую же информацию, но без начального заголовка Accept.

Этот заголовок интерпретируется следующим образом: Типы документов text/html и text/x-c являются предпочтительными, но если они недоступны, тогда клиент отсылающий данный запрос, предпочтёт text/x-dvi, а, если и его нет, то он может принять тип text/plain.

Элемент $_SERVER[‘HTTP_ACCEPT_LANGUAGE’]

В элементе $_SERVER[‘HTTP_ACCEPT_LANGUAGE’] описываются предпочтения клиента относительно языка. Данная информация извлекается из HTTP-заголовка Accept-Language, который присылает клиент серверу. Можно привести следующий пример:

Accept-Language: ru, en; q=0.7

Который можно интерпретировать следующим образом: клиент предпочитает русский язык, но в случае его отсутствия согласен принимать документы на английском. Элемент $_SERVER[‘HTTP_ACCEPT_LANGUAGE’] будет содержать точно такую же информацию, но без заголовка Accept-Language:

Содержимое элемента $_SERVER[‘HTTP_ACCEPT_LANGUAGE’] можно использовать для определения национальной принадлежность посетителей. Однако результаты будут приблизительными, так как многие пользователи используют английские варианты браузеров, которые будут извещать сервер о том, что посетитель предпочитает лишь один язык — английский.

Элемент $_SERVER[‘HTTP_HOST’]

В элементе $_SERVER[‘HTTP_HOST’] содержится имя сервера, которое, как правило, совпадает с доменным именем сайта, расположенного на сервере. Как правило, имя, указанное в данном параметре совпадает с именем $_SERVER[‘SERVER_NAME’]. В параметре приводится лишь доменное имя без названия протокола (http://), т.е.

Элемент $_SERVER[‘HTTP_REFERER’]

В элементе $_SERVER[‘HTTP_REFERER’] приводится адрес страницы, с которой посетитель пришёл на данную страницу. Переход должен осуществляться по ссылке. Создадим две страницы index.php и page.php.

Страница index.php

echo "Ссылка на страницу PHP
" ;
echo "Содержимое $_SERVER[‘HTTP_REFERER’] — " .
$_SERVER [ ‘HTTP_REFERER’ ]
?>

Страница page.php будет аналогичного содержания, но ссылка будет указывать на страницу index.php.

Страница page.php

echo "Ссылка на страницу PHP
" ;
echo "Содержимое $_SERVER[‘HTTP_REFERER’] — " .
$_SERVER [ ‘HTTP_REFERER’ ]
?>

При переходе с одной страницы на другую, под ссылкой будет выводится адрес страницы, с которой был осуществлён переход.

Элемент $_SERVER[‘HTTP_USER_AGENT’]

Элемент $_SERVER[‘HTTP_USER_AGENT’] содержит информацию о типе и версии браузера и операционной системы посетителя.

Вот типичное содержание этой строки: "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)". Наличие подстроки "MSIE 6.0" говорит о том, что посетитель просматривает страницу при помощи Internet Explorer версии 6.0. Строка "Windows NT 5.1" сообщает, что в качестве операционной системы используется Windows XP.

Замечание

Для Windows 2000 элемент $_SERVER[‘HTTP_USER_AGENT’] выглядит следующим образом: "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)’)", в то время как для Windows XP — "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)".

Если посетитель воспользуется браузером Opera, то содержание $_SERVER[‘HTTP_USER_AGENT’]может выглядеть следующим образом: "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04 [ru]". Подстрока "MSIE 6.0" здесь так же присутствует, сообщая, что браузер Opera является совместимым с браузером Internet Explorer и использует те же динамические библиотеки Windows. Поэтому, при анализе строки, возвращаемой браузером, следует иметь в виду, что к Internet Explorer относится строка, содержащая подстроку "MSIE 6.0" и не содержащая подстроки "Opera". Кроме того, из данной строки можно заключить, что пользователь использует операционную систему Windows 98.

Читайте также:  Cpu ratio offset when running avx

Замечание

Пользовательский агент браузера Firefox может выглядеть следующим образом Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5.

При использовании браузера Netscape, содержание элемент $_SERVER[‘HTTP_USER_AGENT’] может выглядеть следующим образом: "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1". Принадлежность к этому браузеру можно определить по наличию подстроки "Netscape". Кроме того, можно узнать, что посетитель выходит в Интернет, используя операционную версию Linux, с ядром, оптимизированным под Pentium IV, находясь в графической оболочке X-Window. Этот механизм удобно использовать для сбора статистической информации, которая позволяет дизайнерам оптимизировать страницы под наиболее распространенные браузеры.

Элемент $_SERVER[‘REMOTE_ADDR’]

В элемент $_SERVER[‘REMOTE_ADDR’] помещается IP-адрес клиента. При тестировании на локальной машине — этот адрес будет равен 127.0.0.1. Однако при тестировании в сети переменная вернёт IP-адрес клиента или последнего прокси-сервера через который клиент попал на сервер. Если клиент использует прокси-сервер узнать его IP-адрес можно при помощи переменной окружения HTTP_X_FORWARDED_FOR, значение которой можно получить при помощи функции getenv().

Замечание

Прокси-сервера являются специальными промежуточными серверами, предоставляющими специальный вид услуг: сжатие трафика, кодирование данных, адаптация под мобильные устройства и т.п. Среди множества прокси-серверов различают так называемые анонимные прокси-сервера, которые позволяют скрывать истинный IP-адрес клиента, такие сервера не возвращают переменной окружения HTTP_X_FORWARDED_FOR.

Извлечение переменной окружения HTTP_X_FORWARDED_FOR

echo getenv ( HTTP_X_FORWARDED_FOR );
?>

Элемент $_SERVER[‘SCRIPT_FILENAME’]

В элемент $_SERVER[‘SCRIPT_FILENAME’] помещается абсолютный путь к файлу от корня диска. Так, если сервер работает под управлением операционной системы Windows, то такой путь может выглядеть следующим образом "d:main estindex.php", т.е. путь указывается от диска, в UNIX-подобной операционной системы путь указывается от корневой директории /, например "/var/share/www/test/index.php".

Элемент $_SERVER[‘SERVER_NAME’]

В элемент $_SERVER[‘SERVER_NAME’] помещается имя сервера, как правило, совпадающее с доменным именем сайта, расположенного на нём. Например,

Содержимое элемента $_SERVER[‘SERVER_NAME’] часто совпадает с содержимым элемента $_SERVER[‘HTTP_HOST’]. Помимо имени сервера суперглобальный массив $_SERVER позволяет выяснить ещё ряд параметров сервера, например IP-адрес сервера, прослушиваемый порт, какой Web-сервер установлен и версию HTTP протокола. Эта информация помещается в элементы $_SERVER[‘SERVER_ADDR’], $_SERVER[‘SERVER_PORT’], $_SERVER[‘SERVER_SOFTWARE’] и $_SERVER[‘SERVER_PROTOCOL’], соответственно. Ниже приводится пример с использованием данных элементов.

Использование элементов массива $_SERVER

echo "Имя сервера — " . $_SERVER [ ‘SERVER_NAME’ ]. "
" ;
echo "IP-адрес сервера — " . $_SERVER [ ‘SERVER_ADDR’ ]. "
" ;
echo "Порт сервера — " . $_SERVER [ ‘SERVER_PORT’ ]. "
" ;
echo "Web-сервер — " . $_SERVER [ ‘SERVER_SOFTWARE’ ]. "
" ;
echo "Версия HTTP-протокола — " . $_SERVER [ ‘SERVER_PROTOCOL’ ]. "
" ;
?>

Элемент $_SERVER[‘REQUEST_METHOD’]

В элемент $_SERVER[‘REQUEST_METHOD’] помещается метод запроса, который применяется для вызова скрипта: GET или POST.

echo $_SERVER [ ‘REQUEST_METHOD’ ]; // GET
?>

Элемент $_SERVER[‘QUERY_STRING’]

В элемент $_SERVER[‘QUERY_STRING’] заносятся параметры, переданные скрипту, если строка запроса представляет собой адрес

то в элемент $_SERVER[‘QUERY_STRING’] попадёт весь текст после знака "?". Например, при обращении к скрипту, представленному ниже, помещая в строке запроса произвольный текст после знака "?" получим страницу с введённым текстом.

echo $_SERVER [ ‘QUERY_STRING’ ]; // > ?>

Элемент $_SERVER[‘PHP_SELF’]

В элемент $_SERVER[‘PHP_SELF’] помещается имя скрипта, начиная от корневой директории виртуального хоста, т.е. если строка запроса представляет собой адрес

то элемент $_SERVER[‘PHP_SELF’] будет содержать фрагмент "/test/index.php". Как правило, этот же фрагмент помещается в элемент $_SERVER[‘SCRIPT_NAME’].

Элемент $_SERVER[‘REQUEST_URI’]

В элемент $_SERVER[‘REQUEST_URI’] содержит имя скрипта, начиная от корневой директории виртуального хоста и параметры, т.е. если строка запроса представляет собой адрес:

то элемент $_SERVER[‘REQUEST_URI’] будет содержать фрагмент "/test/index.php? >

Полный адрес к скрипту

echo "http://" . $_SERVER [ ‘SERVER_NAME’ ]. $_SERVER [ ‘REQUEST_URI’ ];
?>

Дополнительную информацию по суперглобальным массивам вы можете найти здесь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *