Сохраняет ли http-экв ="обновить" информацию и метаданные реферера?

Если бы я создал страницу, как это:

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

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

3 ответа

Решение

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

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

Я сделал дополнительное тестирование с этим. Я задействовал три URI (все в одном домене):

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

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

  • Internet Explorer - нет реферера
  • Firefox - нет реферера
  • Chrome - Referrer: http://example.com/refresh.html
  • Safari - реферер: http://example.com/refresh.html
  • Опера - Реферер: http://example.com/refresh.html

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

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

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

Пример:

<form action="URL" method="GET" name="redirected"></form>
<script>
   setTimeout(function() {
      document.forms.redirected.submit();
   }, 1000);
</script>
Другие вопросы по тегам