Соответствует ли document.referrer заголовку реферера HTTP?

Если я перехожу по обычной ссылке с http://google.com на http://example.com, обычно заголовок http referrer, который мой браузер отправляет на example.com, относится к google.com. Всегда ли значение этого заголовка совпадает со значением document.referrer на странице example.com?


person sermonion x    schedule 01.03.2018    source источник


Ответы (1)


Реферер, отправленный клиентом в заголовке запроса, совпадает с document.referrer доступным в JavaScript. Однако нельзя полагаться на то, что информация о реферере всегда будет доступна.

Клиент должен отправить информацию. Вы можете отключить его, например, в настройках браузера.

В Firefox: https://www.technipages.com/firefox-enable-disable-referrer

или вы можете отключить его с расширением.

В Chrome: https://chrome.google.com/webstore/detail/referer-control/hnkcfpcejkafcihlgbojoidoihckciin?hl=en

Также легко подделать / отправить любого реферера, которого вы хотите. Например, с помощью cURL:

curl --referer http://whatever.com/bot.html http://www.example.com/

РЕДАКТИРОВАТЬ: Вы также можете отключить отправку реферера на странице, чтобы при нажатии на ссылки или вызовах ajax, сделанных с этой страницы, заголовок реферера не отправлялся. Просто добавьте этот тег на страницу.

<meta name="referrer" content="no-referrer" />

Подробнее здесь: https://stackoverflow.com/a/32014225/5601169

person lofihelsinki    schedule 01.03.2018
comment
Итак, document.referer более надежен или заголовок http? Можно ли отключить document.referer? - person sermonion x; 01.03.2018
comment
То же самое, document.referrer — это представление заголовка реферера, отправленного клиентом. Если вы можете отключить заголовок, константа JS также должна быть пустой. - person lofihelsinki; 01.03.2018
comment
это все еще не ясно для меня: 1: Отправить заголовок Referer при нажатии на ссылку и установить document.referrer для следующей страницы. , похоже, что заголовок не совпадает с другим, если я установлю pref на 1, что ff отправляет по-другому на следующую страницу (что такое следующая страница?, вторая, которую вы переходите после связанной?) - person arana; 11.09.2020
comment
В разделе 4.2.1 документа adambarth.com/papers/2008/ barth-jackson-mitchell-b.pdf в нем говорится, что по HTTP заголовок Referer подавляется чаще, чем значение document.referrer для междоменного POST. Это означает, что они не всегда имеют одно и то же значение. - person David Klempfner; 17.01.2021
comment
Насколько я знаю, document.referer получает свое значение из заголовка, я не знаю, откуда еще он мог бы получить его? - person lofihelsinki; 19.01.2021