Сохраняет ли 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>