Подтвердить что ты не робот

Является ли HTTP-заголовком Referer отправленным при переходе на страницу http с https-страницы?

После нескольких тестов я начинаю понимать, что браузер не отправляет HTTP-заголовок Referer, когда вы нажимаете на страницу http из https.

Какая причина безопасности? Is определен где-то в стандарте?

4b9b3361

Ответ 1

HTTP RFC говорится в разделе 15.1.3. Кодирующая чувствительная информация в URI:

Клиенты НЕ ДОЛЖНЫ включать ссылку поле заголовка в (незащищенном) HTTP-заголовке запросить, если ссылающаяся страница была передается с защищенным протоколом.

Итак, это ожидаемое/стандартное поведение.

Ответ 2

На самом деле это не так прямо (2014 г.), в соответствии с этим w3c document по политике referrer.

Поведение по умолчанию заключается в том, что браузеры не будут отправлять информацию о реферере при переходе с HTTPS на HTTP. Однако браузеры будут отправлять реферер при переходе с HTTPS на HTTPS.

Кроме того, в HTML5 есть новый метатег с именем referrer, который выглядит следующим образом:

<meta name="referrer" content="origin">

Новые браузеры уже реализовали это. Таким образом, независимо от того, отправят ли браузер реферер, будет ли он зависеть от этого метатега в ближайшем будущем. Если этот метатег не включен в страницу HTML, то браузеры будут использовать поведение по умолчанию.

Ниже приведены возможные значения атрибута content метатега referrer:

  • no-referrer: Referrer не будет отправлен, независимо от HTTP или HTTPS
  • origin: только исходный (основной) домен будет отправлен как реферер
  • origin-when-crossorigin: то же происхождение отправит полный URL-адрес реферера, а перекрестное происхождение отправит только исходный URL-адрес в качестве реферера
  • no-referrer-when-downgrade: это поведение по умолчанию, если на странице не указан метатег реферера.
  • unsafe-url: это всегда будет отправлять реферер, независимо от HTTP или HTTPS

Кроме того, существуют значения устаревших атрибутов для метатега referrer. Они больше не рекомендуются, но используются на многих сайтах на данный момент:

  • никогда: то же, что и no-referrer
  • по умолчанию: то же, что и без-referrer-when-downgrade
  • всегда: то же самое, что и небезопасный-url

Я надеюсь, что эта информация будет полезна тем, кто только что нашел этот пост после 2014 года.

Ответ 3

Да, определен в стандарте:

Клиенты НЕ ДОЛЖНЫ включать ссылку поле заголовка в (незащищенном) HTTP-заголовке запросить, если ссылающаяся страница была передано с защищенным протоколом

Ответ 4

Причина: Иногда SessionID кодируются URL. Страницы HTTP могут иметь межсайтовый скриптинг, который крадет сеанс из сообщения HTTPS. Чтобы предотвратить это, реферер не передается по HTTPS-HTTP-переходу, поэтому URL-адрес sessin ID не может быть украден.