После нескольких тестов я начинаю понимать, что браузер не отправляет HTTP-заголовок Referer, когда вы нажимаете на страницу http из https.
Какая причина безопасности? Is определен где-то в стандарте?
После нескольких тестов я начинаю понимать, что браузер не отправляет HTTP-заголовок Referer, когда вы нажимаете на страницу http из https.
Какая причина безопасности? Is определен где-то в стандарте?
HTTP RFC говорится в разделе 15.1.3. Кодирующая чувствительная информация в URI:
Клиенты НЕ ДОЛЖНЫ включать ссылку поле заголовка в (незащищенном) HTTP-заголовке запросить, если ссылающаяся страница была передается с защищенным протоколом.
Итак, это ожидаемое/стандартное поведение.
На самом деле это не так прямо (2014 г.), в соответствии с этим w3c document по политике referrer.
Поведение по умолчанию заключается в том, что браузеры не будут отправлять информацию о реферере при переходе с HTTPS на HTTP. Однако браузеры будут отправлять реферер при переходе с HTTPS на HTTPS.
Кроме того, в HTML5 есть новый метатег с именем referrer, который выглядит следующим образом:
<meta name="referrer" content="origin">
Новые браузеры уже реализовали это. Таким образом, независимо от того, отправят ли браузер реферер, будет ли он зависеть от этого метатега в ближайшем будущем. Если этот метатег не включен в страницу HTML, то браузеры будут использовать поведение по умолчанию.
Ниже приведены возможные значения атрибута content метатега referrer:
Кроме того, существуют значения устаревших атрибутов для метатега referrer. Они больше не рекомендуются, но используются на многих сайтах на данный момент:
Я надеюсь, что эта информация будет полезна тем, кто только что нашел этот пост после 2014 года.
Да, определен в стандарте:
Клиенты НЕ ДОЛЖНЫ включать ссылку поле заголовка в (незащищенном) HTTP-заголовке запросить, если ссылающаяся страница была передано с защищенным протоколом
Причина: Иногда SessionID кодируются URL. Страницы HTTP могут иметь межсайтовый скриптинг, который крадет сеанс из сообщения HTTPS. Чтобы предотвратить это, реферер не передается по HTTPS-HTTP-переходу, поэтому URL-адрес sessin ID не может быть украден.