В каких случаях HTTP_REFERER будет пустым - PullRequest
142 голосов
/ 30 июля 2011

Я знаю, что можно получить пустой HTTP_REFERER. При каких обстоятельствах это происходит? Если я получаю пустой, всегда ли это означает, что пользователь изменил его? Получение пустого - это то же самое, что получение пустого? и при каких обстоятельствах я тоже это получаю?

Ответы [ 4 ]

240 голосов
/ 30 июля 2011

Он будет / может быть пустым, когда конечный пользователь

  • введет URL сайта в адресную строку браузера.
  • посетил сайт с помощью поддерживаемой браузером закладки.
  • посетил сайт в качестве первой страницы в окне / вкладке.
  • щелкнул ссылку во внешнем приложении.
  • переключился с URL-адреса https на URL-адрес http.
  • переключен с URL-адреса https на другой URL-адрес https.
  • имеет установленное программное обеспечение безопасности (антивирус / брандмауэр / и т. д.), которое отбирает у реферера все запросы.
  • находится за прокси-сервером, который удаляетреферер из всех запросов.
  • посещал сайт программно (например, curl ) без установки заголовка реферера (поисковые роботы!).
30 голосов
/ 30 июля 2011

HTTP_REFERER - отправляется браузером с указанием последней страницы, просмотренной браузером!

Если вы доверяете [HTTP_REFERER] по любой важной причине, вы не должны этого делать, поскольку ее можно легко подделать:

  1. Некоторые браузеры ограничивают доступ, чтобы запретить передачу HTTP_REFERER
  2. При вводе адреса в адресной строке не будет проходить HTTP_REFERER
  3. открытие нового окна браузера не будет проходитьHTTP_REFERER, потому что HTTP_REFERER = NULL
  4. имеет некоторое дополнение к браузеру, которое блокирует его по соображениям конфиденциальности.*

Попробуйте это расширение Firefox, вы сможете установить любые заголовки:

@ Master of Celebration:

. Firefox:

расширения: refspoof , refontrol , изменение заголовков , no-referer

Полностью отключить: опция доступна в about: config в "network.http.sendRefererHeader", и вы хотите установить это значение в 0, чтобы отключить передачу реферера.

Google Chrome / Chromium:

расширения: noref , spoofy , external noreferrer

Полностью отключить: Chnage ~ / .config / google-chrome / Default / Preferences или ~ / .config / chromium / Default / Preferences и установить это:

{
   ...
   "enable_referrers": false,
   ...
}

Или просто добавьте --no-referrers в ярлык или в cli:

google-chrome --no-referrers

Опера:

Полностью отключить: Настройки> Настройки> Дополнительно> Сеть и снимите флажок «Отправить информацию о реферере»

Поддельный веб-сервис:

http://referer.us/

Автономный прокси-сервер фильтрации (подделывать любой заголовок):

Privoxy

Подмена http_referer при использовании wget

'- referer = url'

Подмена http_referer при использовании curl

-e, --referer

Подмена http_referer с telnet

telnet www.yoursite.com 80 (press return)
GET /index.html HTTP/1.0 (press return)
Referer: http://www.hah-hah.com (press return)
(press return again)
9 голосов
/ 30 июля 2011

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

6 голосов
/ 03 марта 2015

Также будет пустым, если новый черновик стандарта политики реферера используется для предотвращения отправки заголовка реферера источнику запроса.Пример:

<meta name="referrer" content="none">

Несмотря на то, что Chrome и Firefox уже реализовали черновую версию политики реферера, вы должны быть осторожны с ней, потому что, например, Chrome ожидает no-referrer вместо none (и я виделтакже never где-то).

...