Атрибут referrerpolicy

Атрибут referrerpolicy определяет, какие реферальные данные в заголовке Referer следует отправлять при загрузке внешнего документа во фрейме <iframe>.

Заголовок Referer в HTTP-запросе содержит адрес страницы, с которой был загружен внешний документ. Например, если пользователь со страницы https://webref.ru/html/a загрузил документ с другого сайта, то в запросе будет следующий заголовок:

https://webref.ru/html/a

Заголовок Referer может применяться для следующих задач:

  • аналитика, откуда на сайт приходят пользователи;
  • определение популярных веб-страниц для входа;
  • сбор статистики по переходам между страницами сайта;
  • проверка, что запрос пришел с того же сайта;
  • ограничение доступа к содержимому с определённых адресов.

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

https://webref.ru/example/handler.php?login=Вася&password=12345

Таким образом, атрибут referrerpolicy определяет политику, какие данные включать в заголовок Referer: никакие, ограниченные или все.

Синтаксис

<iframe referrerpolicy="no-referrer | no-referrer-when-downgrade | same-origin | origin |
  strict-origin | origin-when-cross-origin | strict-origin-when-cross-origin | unsafe-url"</iframe>

Значения

no-referrer
Заголовок Referer не отправляется.
no-referrer-when-downgrade
Заголовок Referer не отправляется при переходе с защищённого протокола на обычный (HTTPS→HTTP).
same-origin
Реферальные данные отправляются в пределах одного сайта, при переходе на другой сайт данные не передаются.
origin
Реферальные данные ограничены и включают только протокол, адрес сайта и порт, если он указан (https://example.com:80).
strict-origin
Реферальные данные включают протокол, адрес сайта и порт (при его наличии). Сами данные передаются только в рамках одного и того же протокола (HTTPS→HTTPS) и не отправляются при переходе на менее безопасный (HTTPS→HTTP).
origin-when-cross-origin
В рамках одного сайта передаётся полный путь. При переходе на другой сайт реферальные данные ограничены и включают только протокол, адрес сайта и порт.
strict-origin-when-cross-origin
Передаёт полный путь в рамках одного сайта, на другой сайт передаётся протокол, адрес сайта и порт, но только когда протокол остаётся прежним (HTTPS → HTTPS). Заголовок не передаётся при переходе на менее безопасный протокол (HTTPS→HTTP).
unsafe-url
Реферальные данные включают полный адрес документа. Это значение считается небезопасным.

Значение по умолчанию

strict-origin-when-cross-origin

Пример

<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>iframe</title> <style> iframe { border: none; /* Убираем рамку вокруг фрейма */ } </style> </head> <body> <p>Псковский Кремль</p> <p><iframe src="https://yandex.ru/map-widget/v1/?um=constructor%3A402b4411b4f25fab26f9760ece488ae1fabfd074352f545214c663df8a6ff072&amp;source=constructor" width="460" height="430" referrerpolicy="no-referrer"></iframe></p> </body> </html>

В данном примере во фрейм загружается интерактивная карта местности с помощью сервиса Яндекс.Карты. Чтобы не передавать на сторонний сайт реферальные данные к элементу <iframe> добавлен атрибут referrerpolicy со значением no-referrer.

Браузеры

79 51 38 14 50
51 50 41 14

В таблице браузеров применяются следующие обозначения.

  • — элемент полностью поддерживается браузером;
  • — элемент браузером не воспринимается и игнорируется;
  • — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.

Число указывает версию браузреа, начиная с которой элемент поддерживается.