Заголовки: Permissions-Policy-Report-Only
Заголовок Permissions-Policy-Report-Only
Экспериментальная технология: Это экспериментальная технология
Перед использованием в рабочей среде внимательно ознакомьтесь с таблицей совместимости браузеров.
HTTP-заголовок Permissions-Policy-Report-Only ответа предоставляет администраторам веб-сайтов механизм для регистрации нарушений Permissions-Policy без применения этих правил. Это позволяет протестировать и устранить проблемы с политикой разрешений до развертывания политики.
Синтаксис и поведение полностью совпадают с Permissions-Policy, за исключением следующего:
- Политика не применяется.
- Объекты отчетов о нарушении политики (
PermissionsPolicyViolationReport) имеют значениеbody.disposition"report"вместо"enforce".
Подробнее см. в разделе Permissions-Policy (большая часть его содержимого не дублируется ниже).
| Тип заголовка | Заголовок ответа |
|---|
Синтаксис
# Single directive Permissions-Policy-Report-Only: <directive>=<allowlist> # Single directive with reporting endpoint Permissions-Policy-Report-Only: <directive>=<allowlist>;report-to=<endpoint> # Multiple directives, with and without server reporting endpoints Permissions-Policy-Report-Only: <directive>=<allowlist>, <directive>=<allowlist>;report-to=<endpoint>, ...
Примеры
>Основы использования
Компания SecureCorp Inc. хочет отключить API Geolocation в своем приложении. Прежде чем развернуть политику с помощью Permissions-Policy, она добавляет заголовки Permissions-Policy-Report-Only и Reporting-Endpoints, как показано ниже:
Reporting-Endpoints: geo_endpoint="https://example.com/reports" Permissions-Policy-Report-Only: geolocation=();report-to=geo_endpoint
Указав geolocation=() в списке источников, компания устанавливает нарушение для любого контекста просмотра, который обращается к геолокации (включая <iframe>s), независимо от источника. Параметр report-to указывает, что отчеты будут отправляться в конечную точку с именем geo_endpoint. Соответствие между geo_endpoint и URL-адресом, на который следует отправлять отчеты, задается в Reporting-Endpoints.
Нарушение происходит, когда страница пытается использовать заблокированную функцию, например:
navigator.geolocation.getCurrentPosition(
() => {},
() => {},
);
Данные отчета, отправленные в конечную точку, будут иметь ту же структуру, что и в приведенном ниже примере JSON. Этот отчет аналогичен отчету для Permissions-Policy, за исключением значения body.disposition.
[
{
"age": 48512,
"body": {
"columnNumber": 29,
"disposition": "report", // A violation that is reported but not enforced
"lineNumber": 44,
"message": "Permissions policy violation: geolocation access has been blocked because of a permissions policy applied to the current document.",
"featureId": "geolocation",
"sourceFile": "https://example.com/"
},
"type": "permissions-policy-violation",
"url": "https://example.com/",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
}
]
Примечание: При сериализации отчетов о нарушениях на стороне сервера Chrome использует policyId вместо featureId в качестве имени функции в body серверного отчета. Объект PermissionsPolicyViolationReport, возвращаемый объектом ReportingObserver, соответствует спецификации.
Спецификации
Совместимость браузеров
| Компьютер | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
Permissions-Policy-Report-Only |
120 | 120 | Нет | 106 | Нет | 120 | Нет | 80 | Нет | 25.0 | 120 | Нет |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Permissions-Policy-Report-Only