Spec-Zone.ru › Web APIs

CSPViolationReportBody: свойство referrer

Свойство referrer только для чтения интерфейса CSPViolationReportBody — это строка, представляющая URL-адрес страницы-источника ресурса, политика безопасности контента (CSP) которого была нарушена.

Referrer — это страница, которая привела к загрузке страницы с нарушением CSP. Например, если мы перешли по ссылке на страницу с нарушением CSP, то referrer — это страница, с которой мы перешли.

Значение

Строка, представляющая URL-адрес страницы-источника со нарушением CSP, или null.

Обратите внимание, что если referrer — это HTTP(S) URL, то любое имя пользователя, пароль или фрагмент будут удалены. Если схема URL не http: или https:, то возвращается только схема.

Примеры

Нарушение CSP встроенного скрипта, показывающее referrer

В этом примере вызывается нарушение CSP с помощью встроенного скрипта и сообщается о нарушении с помощью ReportingObserver. Мы переходим на страницу с другой страницы и регистрируем referrer, documentURL, и blockedURL.

HTML

Сначала мы определяем страницу-источник /bounce/index.html. Эта страница содержит только ссылку на другую страницу ../report_sample/index.html.

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  </head>
  <body>
    <ul>
      <li><a href="../report_sample/">report sample</a></li>
    </ul>
  </body>
</html>

Ниже определён HTML-файл ../report_sample/index.html. Он использует элемент <meta> для установки политики безопасности контента Content-Security-Policy script-src-elem на self, что позволяет загружать скрипты с того же домена, но не позволяет выполнять встроенные скрипты. Документ также включает встроенный скрипт, который вызовет нарушение CSP.

<!doctype html>
<!-- /report_sample/index.html -->
<html lang="en">
  <head>
    <meta
      http-equiv="Content-Security-Policy"
      content="script-src-elem 'self' 'report-sample'" />
    <script src="main.js"></script>
  </head>
  <body>
    <script>
      const int = 4;
    </script>
  </body>
</html>

JavaScript (main.js)

В примере выше также загружается внешний скрипт main.js, который показан ниже. Поскольку он загружается с того же домена, что и HTML, он не блокируется CSP.

Скрипт создаёт новый ReportingObserver для наблюдения за сообщениями о нарушениях контента типа "csp-violation". Каждый раз, когда вызывается функция обратного вызова, мы получаем тело первого элемента массива сообщений и используем его для регистрации нарушения documentURL, referrer, и blockedURL в консоли.

// main.js
const observer = new ReportingObserver(
  (reports, observer) => {
    console.log(`documentURL: ${reports[0].body.referrer}`);
    console.log(`referrer: ${reports[0].body.referrer}`);
    console.log(`blockedURL: ${reports[0].body.blockedURL}`);
  },
  {
    types: ["csp-violation"],
    buffered: true,
  },
);

observer.observe();

Обратите внимание, что, хотя в возвращаемом массиве могут быть несколько отчётов, для краткости мы регистрируем только значения первого элемента.

Результаты

Вывод консоли для приведенного выше кода будет примерно таким (сайт будет зависеть от того, как страницы обслуживаются):

documentURL: http://127.0.0.1:9999/report_sample/
referrer: http://127.0.0.1:9999/bounce/
blockedURL: inline

Обратите внимание, что referrer — это страница, с которой мы перешли, documentURL — это страница с нарушением CSP, и blockedURL в данном случае вообще не URL, а указание на то, что нарушение было вызвано небезопасным встроенным скриптом.

Спецификации

Спецификация
Политика безопасности контента уровня 3
# dom-cspviolationreportbody-referrer

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
referrer 74 79 Нет 56 предварительный просмотр 74 Нет 48 Нет 10.0 74

См. также

  • SecurityPolicyViolationEvent.referrer
  • Referer

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/CSPViolationReportBody/referrer

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API