Атрибут referrerpolicy определяет, какие реферальные данные следует отправлять в заголовке Referer при загрузке сторонних скриптов.
Заголовок Referer в HTTP-запросе содержит адрес страницы, с которой было загружен скрипт. Например, если пользователь открыл страницу https://webref.ru/html/a и с неё загрузился скрипт, то в запросе будет следующий заголовок:
https://webref.ru/html/a
Заголовок Referer может применяться для следующих задач:
- аналитика, откуда на сайт приходят пользователи;
- определение популярных веб-страниц для входа;
- сбор статистики по переходам между страницами сайта;
- проверка, что запрос пришел с того же сайта;
- ограничение доступа к содержимому с определённых адресов.
Вместе с тем, не всегда полный адрес следует передавать на другие ресурсы в целях безопасности. К примеру, в адресе может содержаться информация об имени пользователя, электронной почте, пароле и другие конфиденциальные данные. Такие данные могут оказаться в адресе при заполнении формы:
https://webref.ru/example/handler.php?login=Вася&password=12345
Таким образом, атрибут referrerpolicy определяет политику, какие данные включать в заголовок Referer: никакие, ограниченные или все.
Синтаксис
<script referrerpolicy="no-referrer | no-referrer-when-downgrade | same-origin | origin |
strict-origin | origin-when-cross-origin | strict-origin-when-cross-origin | unsafe-url"></script>>
Значения
- 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>
<title>referrerpolicy</title>
<meta charset="utf-8">
</head>
<body>
<h2><span class="text"></span></h2>
<script
src="https://unpkg.com/typed.js@2.1.0/dist/typed.umd.js"
referrerpolicy="no-referrer"></script>
<script>
var typed = new Typed('.text', {
strings: ['Библиотека typed.js','Имитирует набор текста на клавиатуре'],
cursorChar: '_',
typeSpeed: 100,
loop: true
});
</script>
</body>
</html>
Браузеры
Браузеры
В таблице браузеров применяются следующие обозначения.
- — элемент полностью поддерживается браузером;
- — элемент браузером не воспринимается и игнорируется;
- — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.
Число указывает версию браузреа, начиная с которой элемент поддерживается.