Сохраняет ли http-equ = "refresh" информацию и метаданные реферера? - PullRequest
14 голосов
/ 06 июня 2010

Если я настрою страницу следующим образом:

<html><head><meta http-equiv="refresh" content="0;url=http://internic.net/"></head><body></body></html>

Будет ли браузер отправлять информацию о реферере и другие метаданные при выполнении перенаправления?

Ответы [ 3 ]

13 голосов
/ 06 июня 2010

При тестировании здесь Firefox и IE не , а Chrome отправляет реферера (хотя это также противоречиво), независимо от того, идет ли он в тот же домен или нет ,

Поскольку я не могу найти никаких спецификаций, указывающих, что должно быть стандартным поведением, а W3C в целом не одобряет перенаправление META, я не уверен, что вы когда-либо будете зависеть от того, что это согласованно. 1009 *

3 голосов
/ 18 июня 2014

Я провел дополнительное тестирование с этим. У меня было три URI (все в одном домене):

  • /page.html с ссылкой на мета-обновление
  • /refresh.html, который использовал мета-обновление до места назначения
  • /destination.html, который использовал JavaScript для записи реферера на страницу.

Я запустил тест в нескольких браузерах, открыв page.html и щелкнув по ссылке, а затем выяснив, каким был реферер в пункте назначения. Вот результаты:

Ни один из браузеров не показывал http://example.com/page.html в качестве реферера так, как при перенаправлении 301 или 302. Таким образом, метаобновление может быть использовано до некоторой степени, чтобы скрыть реферера:

  • Скрыть конкретную страницу, на которой была ссылка
  • Удалить строку запроса из реферера
  • Если обновление размещено на стороннем сайте, скрыть конкретный сайт, на который есть ссылка
  • Удаление внешнего реферера при входящем трафике (полезно в ситуациях , как это )
2 голосов
/ 25 октября 2018

Действительно, можно обмануть Firefox и Internet Explorer , получив тот же результат перенаправления с сохраненным реферером , просто используя форму с отложенной отправкой .

Пример:

<form action="URL" method="GET" name="redirected"></form>
<script>
   setTimeout(function() {
      document.forms.redirected.submit();
   }, 1000);
</script>
...