Referrer-Policy
Применение
Когда браузер переходит по ссылке или загружает подресурс, он обычно отправляет заголовок Referer, содержащий URL исходной страницы. Заголовок Referrer-Policy даёт владельцам сайтов контроль над тем, какая часть URL передаётся и отправляется ли заголовок Referer вообще.
Сайты, чувствительные к вопросам приватности, удаляют информацию о реферере, чтобы не допустить утечки параметров запроса, путей или сведений об источнике третьим сторонам. Политика применяется к переходам, запросам подресурсов и операциям предварительной загрузки, инициированным со страницы.
Разделённый запятыми список политик служит цепочкой запасных вариантов. Браузер выбирает последнюю политику в списке, которую он поддерживает, что делает развёртывание с заделом на будущее простым и понятным.
Установка политики
Существует три механизма задания политики реферера:
Атрибуты на уровне элемента переопределяют метатег уровня страницы, который, в свою очередь, переопределяет HTTP-заголовок. HTTP-заголовок — самый надёжный способ, поскольку политика вступает в силу до разбора какого-либо HTML.
no-referrer
Директива no-referrer полностью подавляет заголовок Referer. Ни с одним запросом, исходящим со страницы, не передаётся никакой информации об URL.
no-referrer-when-downgrade
Директива no-referrer-when-downgrade отправляет полный URL (источник, путь и строку запроса) для запросов в пределах того же протокола. Когда запрос понижает уровень безопасности (с HTTPS на HTTP), заголовок Referer опускается.
origin
Директива origin отправляет только ту часть URL, которая относится к источнику (схема, хост и порт). Путь и строка запроса удаляются из каждого запроса.
origin-when-cross-origin
Директива origin-when-cross-origin отправляет полный URL для запросов в пределах того же источника. Для межисточниковых запросов или при понижении протокола отправляется только источник.
same-origin
Директива same-origin отправляет полный URL для запросов в пределах того же источника и полностью опускает заголовок Referer для межисточниковых запросов.
strict-origin
Директива strict-origin отправляет только источник и только тогда, когда уровень безопасности протокола остаётся прежним или повышается (с HTTPS на HTTPS либо с HTTP на HTTP). Понижение протокола подавляет заголовок.
strict-origin-when-cross-origin
Директива strict-origin-when-cross-origin отправляет полный URL для запросов в пределах того же источника, отправляет только источник для межисточниковых запросов на том же уровне безопасности и опускает заголовок при понижении протокола. Это политика по умолчанию в современных браузерах, когда Referrer-Policy не задана.
unsafe-url
Директива unsafe-url отправляет полный URL (источник, путь и строку запроса) с каждым запросом независимо от назначения и протокола. Она раскрывает больше всего информации и редко уместна в продакшене.
Пример
Строгая политика по умолчанию, отправляющая только источник при межисточниковых переходах:
Referrer-Policy: strict-origin-when-cross-origin
Конфигурация с упором на приватность, подавляющая все данные о реферере:
Referrer-Policy: no-referrer
Цепочка запасных вариантов, в которой браузер выбирает strict-origin при поддержке и иначе откатывается к no-referrer:
Referrer-Policy: no-referrer, strict-origin