Яндекс.Метрика

Referrer-Policy не работает: как найти причину

11 Октябрь, 2026 • Безопасность сайта • 89 просмотров

Referrer-Policy не работает

Настроили Referrer-Policy, но referer всё равно передаётся: как проверить заголовок, meta, конфликты и заставить политику работать.

Вы настроили Referrer-Policy, чтобы не передавать referer на внешние сайты. Но в логах или инструментах разработчика видно, что referer всё равно передаётся. Или политика работает в одном браузере, но не в другом. Причина может быть в заголовке, meta, конфликтах или поддержке браузеров. Разберём, почему Referrer-Policy не работает и как это исправить.

Что такое Referrer-Policy

Referrer-Policy — это заголовок или meta-тег, который управляет тем, какая информация о источнике передаётся при переходе по ссылке или загрузке ресурса. Он влияет на приватность и безопасность.

Основные значения:

— no-referrer — referer не передаётся;

— same-origin — referer передаётся только для того же домена;

— strict-origin — передаётся только origin, только для HTTPS;

— strict-origin-when-cross-origin — передаётся origin для кросс-доменных запросов;

— no-referrer-when-downgrade — передаётся referer, кроме перехода с HTTPS на HTTP.

Если политика настроена неправильно, referer может передаваться, даже если вы этого не хотите.

Причина 1: заголовок не отдаётся

Самая частая причина. Заголовок Referrer-Policy может быть не настроен или не отдаваться сервером.

Что проверить:

— отдаётся ли заголовок Referrer-Policy;

— на всех ли страницах он отдаётся;

— на всех ли типах ресурсов;

— нет ли ошибок в конфиге сервера.

Для проверки используйте проверка Referrer Policy — инструмент покажет, отдаётся ли заголовок и какое значение используется.

Причина 2: конфликт meta и заголовка

Referrer-Policy можно задать через заголовок или через meta-тег. Если заданы оба и они конфликтуют, браузер может использовать одно значение, а не другое.

Что проверить:

— есть ли meta referrer-policy;

— есть ли заголовок Referrer-Policy;

— совпадают ли они;

— какое значение используется.

Заголовок обычно имеет приоритет над meta. Но если meta стоит раньше, браузер может использовать его.

Причина 3: неправильное значение

Если значение указано неправильно, политика может не работать. Например:

— no-referrer-when-downgrade не блокирует referer для HTTPS→HTTPS;

— same-origin не блокирует referer для того же домена;

— strict-origin передаёт origin, а не полный URL;

— some-referrer не существует.

Что проверить:

— правильное ли значение указано;

— соответствует ли оно задаче;

— поддерживается ли оно браузерами.

Причина 4: браузер не поддерживает

Некоторые браузеры не поддерживают определённые значения Referrer-Policy или поддерживают их частично.

Что проверить:

— поддерживает ли браузер значение;

— как ведёт себя браузер;

— есть ли различия между браузерами.

Для максимальной совместимости используйте значения, которые поддерживаются большинством браузеров, например strict-origin-when-cross-origin.

Причина 5: referer передаётся через другие механизмы

Иногда referer передаётся не через стандартный заголовок, а через другие механизмы:

— через JavaScript (document.referrer);

— через параметры URL;

— через сторонние скрипты;

— через редиректы.

Что проверить:

— нет ли JavaScript, который передаёт referer;

— нет ли параметров URL с referer;

— нет ли сторонних скриптов, которые передают referer;

— нет ли редиректов, которые добавляют referer.

Как найти причину

Пошаговая диагностика:

— проверьте заголовок Referrer-Policy;

— проверьте meta referrer-policy;

— проверьте значение;

— проверьте, поддерживает ли браузер значение;

— проверьте, не передаётся ли referer через другие механизмы;

— проверьте в разных браузерах.

Как исправить

План действий:

— настроить заголовок Referrer-Policy;

— убрать конфликтующий meta;

— выбрать правильное значение;

— проверить поддержку браузеров;

— проверить, не передаётся ли referer через другие механизмы;

— проверить результат.

Как проверить результат

Чек-лист:

— заголовок отдаётся;

— значение корректное;

— нет конфликта с meta;

— referer не передаётся, если это задано;

— работает в разных браузерах;

— нет других механизмов передачи referer.

Если нужно проверить сразу несколько параметров — referrer policy, CSP, HSTS — логично перейти к SEO-аудиту.

Частые ошибки

— заголовок не отдаётся;

— конфликт meta и заголовка;

— неправильное значение;

— браузер не поддерживает значение;

— referer передаётся через JavaScript;

— отсутствие проверки в разных браузерах.

FAQ

Почему Referrer-Policy не работает?

Причин несколько: заголовок не отдаётся, конфликт с meta, неправильное значение, браузер не поддерживает или referer передаётся через другие механизмы.

Что такое referer?

Это информация о источнике перехода. Она передаётся в заголовке Referer при переходе по ссылке или загрузке ресурса.

Какое значение Referrer-Policy использовать?

Для большинства сайтов подходит strict-origin-when-cross-origin. Он передаёт origin для кросс-доменных запросов, но не полный URL.

Может ли meta переопределять заголовок?

Обычно заголовок имеет приоритет, но если meta стоит раньше, браузер может использовать его. Лучше не задавать оба.

Влияет ли Referrer-Policy на SEO?

Косвенно. Он влияет на приватность и безопасность, что может влиять на доверие пользователей и поисковиков.

Почему referer передаётся, хотя политика no-referrer?

Возможно, заголовок не отдаётся, или referer передаётся через JavaScript или другие механизмы. Проверьте все источники.

Поддерживают ли все браузеры Referrer-Policy?

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

Можно ли задать Referrer-Policy только для части страниц?

Да, через заголовок на уровне сервера или meta на конкретной странице. Но лучше применять политику последовательно.

Что делать, если referer передаётся через JavaScript?

Проверьте код на наличие document.referrer или других механизмов передачи. Referrer-Policy не блокирует JavaScript-передачу.

Как проверить, что Referrer-Policy работает?

Используйте инструмент проверки Referrer Policy и проверьте в разных браузерах. Убедитесь, что referer не передаётся, если это задано.

0 из 0 оценок