Отправляется ли заголовок HTTP Referer при переходе на страницу http со страницы https? - PullRequest
38 голосов
/ 01 сентября 2009

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

Для чего нужна безопасность? Это определено где-то в стандарте?

Ответы [ 4 ]

53 голосов
/ 01 сентября 2009

Состояние HTTP RFC в разделе 15.1.3 Кодирование конфиденциальной информации в URI :

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

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

20 голосов
/ 11 декабря 2014

На самом деле это уже не так просто (начиная с 2014 года), согласно этому документу w3c о политике реферера .

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

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

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

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

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

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

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

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

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

17 голосов
/ 01 сентября 2009

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

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

4 голосов
/ 01 сентября 2009

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

...