Подтвердить что ты не робот

HTTP Referer не всегда передается

У меня есть приложение, которое регистрирует посещения пользователей. Ни один из этих посещений напрямую не доступен, 100% этих посещений отправляются с другого сайта.

Я передаю $_SERVER['HTTP_REFERER'] через базу данных. Приблизительно 35% зарегистрированных заходов проходят референт, остальные - пустые.

Есть ли причина для этого?

4b9b3361

Ответ 1

Если пользователь посещает ваш сайт напрямую, нет реферера. Также возможно, что они настроили его, поэтому их браузер никогда не отправляет реферер.

В соответствии с этим ответом браузер не обязательно отправляет реферер при выполнении метаобновления.

Ответ 2

Существует несколько причин, по которым HTTP_REFERER может быть пустым.

  • Вы должны понимать это переменную среды, заданную браузером. Значение пользователей может удалить его или даже изменить, если они так намереваются.
  • Пользователи, получающие доступ к ссылке из закладки, истории или путем ввода ссылки вручную, не имеют реферирования.
  • Известно также, что IE удаляет референт в ситуациях, вращающихся вокруг javascript. Например, window.open, window.location и даже установка target="_blank" в якорях или meta refresh.
  • Нажав встроенную ссылку в приложении чата, документ PDF/Word/Excel, также не будет установлен референт.
  • Использование AJAX, file_get_contents, fopen и других подобных функций на других языках, вероятно, не будет устанавливать запрос реферера.
  • cURL, fsockopen, приложения, которые имеют компоненты, подобные браузерам не могут устанавливать референт.

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

Ответ 3

Браузеры иногда будут включать referer в запросе. Но это необязательно делать (referer является добровольным на 100%). Действительно, существуют различные проблемы конфиденциальности и безопасности, связанные с referer (например, если сайт HTTPS ссылается на сайт HTTP, браузер не должен включать ссылочный сайт как referer). Поэтому не полагайтесь на это.

Ответ 4

При связывании одного документа с другим в Internet Explorer 4.0 и более поздних версиях заголовок Referer не будет отправлен, если ссылка находится на странице HTTPS на странице, отличной от HTTPS. Заголовок Referer также не будет отправлен, если ссылка связана с протоколом, отличным от HTTP (S), например file://, на другой странице. для получения дополнительной информации перейдите по этой ссылке

Ответ 5

  • Прямой доступ к вашей странице (ввод URL-адреса в адресной строке или из закладок, истории и т.д.)
  • Настройки браузера (отключенный реферер или пустой)
  • если кто-то запрашивает содержимое страницы с помощью file_get_contents() function...

Ответ 6

Обычно, когда вы застряли, выясните, почему он отсутствует: - Когда-нибудь ваш референт https, и вы на http, он будет потерян.

В противном случае: - Пользователь получает доступ напрямую, указав URL-адрес. - Пользователь имеет закладки и идет из закладок. - Когда-то пользователь сохранял значение по умолчанию для браузера (аналогично закладке) - Прокси-серфинг может удалить референт. - доступ к веб-сайту в виде ботов (поисковая система)