Политика Referrer
Политика Referrer
Заголовок Referrer-Policy HTTP-заголовка управляет тем, сколько информации о ссылке (отправленной вместе с Referer заголовком) должно быть включено в запросы. Помимо HTTP-заголовка, вы можете установить эту политику в HTML.
| Тип заголовка | Заголовок ответа |
|---|---|
| Запрещенное имя заголовка | нет |
Синтаксис
Referrer-Policy: no-referrer Referrer-Policy: no-referrer-when-downgrade Referrer-Policy: origin Referrer-Policy: origin-when-cross-origin Referrer-Policy: same-origin Referrer-Policy: strict-origin Referrer-Policy: strict-origin-when-cross-origin Referrer-Policy: unsafe-url
Примечание: Исходное имя заголовка Referer — это орфографическая ошибка слова «referrer». В заголовке Referrer-Policy этой ошибки нет.
Директивы
no-referrer-
Заголовок
Refererбудет опущен: отправленные запросы не содержат никакой информации о ссылке. no-referrer-when-downgrade-
Отправьте источник, путь и строку запроса в
Referer, если уровень безопасности протокола остается прежним или улучшается (HTTP→HTTP, HTTP→HTTPS, HTTPS→HTTPS). Не отправляйте заголовокRefererдля запросов к менее безопасным местам назначения (HTTPS→HTTP, HTTPS→файл). origin-
Отправьте только источник в заголовке
Referer. Например, документ по адресуhttps://example.com/page.htmlотправит ссылкуhttps://example.com/. origin-when-cross-origin-
При выполнении запроса из того же источника на том же уровне протокола (HTTP→HTTP, HTTPS→HTTPS) отправьте источник, путь и строку запроса. Отправьте только источник для межсайтовых запросов и запросов к менее безопасным местам назначения (HTTPS→HTTP).
same-origin-
Отправьте источник, путь и строку запроса для запросов из того же источника. Не отправляйте заголовок
Refererдля межсайтовых запросов. strict-origin-
Отправьте только источник, когда уровень безопасности протокола остается прежним (HTTPS→HTTPS). Не отправляйте заголовок
Refererна менее безопасные места назначения (HTTPS→HTTP). -
strict-origin-when-cross-origin(по умолчанию) -
Отправьте источник, путь и строку запроса при выполнении запроса из того же источника. Для межсайтовых запросов отправьте только источник, когда уровень безопасности протокола остается прежним (HTTPS→HTTPS). Не отправляйте заголовок
Refererна менее безопасные места назначения (HTTPS→HTTP).Примечание: Это политика по умолчанию, если политика не указана или указанное значение недействительно (см. пересмотр спецификации ноябрь 2020 года). Ранее значение по умолчанию было
no-referrer-when-downgrade. unsafe-url-
Отправьте источник, путь и строку запроса при выполнении любого запроса, независимо от безопасности.
Предупреждение: Эта политика может раскрыть потенциально конфиденциальную информацию из URL-адресов ресурсов HTTPS небезопасным источникам. Внимательно рассмотрите последствия этого параметра.
Интеграция с HTML
Вы также можете установить политики referrers внутри HTML. Например, вы можете установить политику referrers для всего документа с помощью элемента <meta> с атрибутом name referrer:
<meta name="referrer" content="origin" />
Вы можете указать атрибут referrerpolicy на элементах <a>, <area>, <img>, <iframe>, <script> или <link>, чтобы установить политики referrers для отдельных запросов:
<a href="http://example.com" referrerpolicy="origin">…</a>
Кроме того, вы можете установить отношение ссылки noreferrer на элементах a, area, или link:
<a href="http://example.com" rel="noreferrer">…</a>
Предупреждение: Как видно выше, отношение ссылки noreferrer записывается без дефиса. Когда вы указываете политику referrers для всего документа с элементом <meta>, его следует записывать с дефисом: <meta name="referrer" content="no-referrer">.
Интеграция с CSS
CSS может получать ресурсы, на которые ссылаются таблицы стилей. Эти ресурсы также следуют политике referrers:
Примеры
no-referrer
| Из документа | Переход к | Использование ссылки |
|---|---|---|
https://example.com/page | любой | (ссылка не используется) |
no-referrer-when-downgrade
| Из документа | Переход к | Использование ссылки |
|---|---|---|
https://example.com/page | https://example.com/otherpage | https://example.com/page |
https://example.com/page | https://mozilla.org | https://example.com/page |
https://example.com/page | http://example.com | (ссылка не используется) |
origin
| Из документа | Переход к | Использование ссылки |
|---|---|---|
https://example.com/page | любой | https://example.com/ |
origin-when-cross-origin
| Из документа | Переход к | Использование ссылки |
|---|---|---|
https://example.com/page | https://example.com/otherpage | https://example.com/page |
https://example.com/page | https://mozilla.org | https://example.com/ |
https://example.com/page | http://example.com/page | https://example.com/ |
same-origin
| Из документа | Переход к | Использование ссылки |
|---|---|---|
https://example.com/page | https://example.com/otherpage | https://example.com/page |
https://example.com/page | https://mozilla.org | (ссылка не используется) |
strict-origin
| Из документа | Переход к | Использование ссылки |
|---|---|---|
https://example.com/page | https://mozilla.org | https://example.com/ |
https://example.com/page | http://example.com | (ссылка не используется) |
| http://example.com/page | любой | http://example.com/ |
strict-origin-when-cross-origin
| Из документа | Переход по ссылке | Используемый referrer |
|---|---|---|
https://example.com/page | https://example.com/otherpage | https://example.com/page |
https://example.com/page | https://mozilla.org | https://example.com/ |
https://example.com/page | http://example.com | (нет referrer) |
unsafe-url
| Из документа | Переход по ссылке | Используемый referrer |
|---|---|---|
https://example.com/page?q=123 | в любое место | https://example.com/page?q=123 |
Укажите политику резервного копирования
Если вы хотите указать политику резервного копирования на случай, если выбранная политика не поддерживается большинством браузеров, используйте список, разделенный запятыми, с нужной политикой в конце:
Referrer-Policy: no-referrer, strict-origin-when-cross-origin
В приведенном примере no-referrer используется только в том случае, если браузер не поддерживает политику strict-origin-when-cross-origin.
Примечание: Указание нескольких значений поддерживается только в заголовке HTTP Referrer-Policy, а не в атрибуте referrerpolicy.
Настройки/предпочтения, специфичные для браузера
Предпочтения Firefox
Вы можете настроить политику по умолчанию referrer в настройках Firefox. Названия настроек зависят от версии:
- Firefox версии 59 и выше:
network.http.referer.defaultPolicy(иnetwork.http.referer.defaultPolicy.pbmodeдля частных сетей) - Firefox версии от 53 до 58:
network.http.referer.userControlPolicy
Все эти настройки принимают те же значения: 0 = no-referrer, 1 = same-origin, 2 = strict-origin-when-cross-origin, 3 = no-referrer-when-downgrade.
Спецификации
| Спецификация |
|---|
| Политика referrer # referrer-policy-header |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | |
Referrer-Policy |
56 |
79 |
50 |
Нет |
43 |
11.1 |
56 |
56 |
50 |
43 |
12 |
7.2 |
default_strict-origin-when-cross-origin |
85 |
85 |
87 |
Нет |
71 |
15 |
85 |
85 |
87 |
60 |
15 |
14.0 |
same-origin |
61 |
79 |
52 |
Нет |
48 |
11.1 |
61 |
61 |
52 |
45 |
12 |
7.2 |
strict-origin |
61 |
79 |
52 |
Нет |
48 |
11.1 |
61 |
61 |
52 |
45 |
12 |
7.2 |
strict-origin-when-cross-origin |
61 |
79 |
52 |
Нет |
48 |
11.1 |
61 |
61 |
52 |
45 |
12 |
7.2 |
См. также
- Безопасность веб-приложений > Заголовок Referer: проблемы с конфиденциальностью и безопасностью
- HTTP referer в Википедии
- При использовании Fetch:
Request.referrerPolicy - Устаревшее
Content-Security-Policy'sreferrerУстаревшее настройка. - Политика одинакового происхождения
- Более строгий контроль над вашими referrer — блог безопасности Mozilla
© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy