Политика функций
Политика функций
Предупреждение: В спецификации заголовок был переименован в Permissions-Policy, и эта статья в конечном итоге будет обновлена, чтобы отразить это изменение.
Заголовок HTTP Feature-Policy предоставляет механизм для разрешения и запрета использования функций браузера в собственном фрейме и в содержимом внутри любых <iframe> элементов в документе.
Для получения дополнительной информации см. основную статью Политика функций.
| Тип заголовка | Заголовок ответа |
|---|---|
| Запрещенное имя заголовка | да |
Синтаксис
Feature-Policy: <directive> <allowlist>
<directive>-
Директива политики функций, к которой применять
allowlist. См. Директивы ниже для списка разрешенных имён директив. <allowlist>-
allowlist— список источников, который принимает одно или несколько следующих значений, разделенных пробелами:-
*: Функция будет разрешена в этом документе и во всех вложенных контекстах просмотра (iframes), независимо от их источника. -
'self': Функция будет разрешена в этом документе и во всех вложенных контекстах просмотра (iframes) в том же источнике. Функция не разрешена в документах с другим источником во вложенных контекстах просмотра. -
'src': (Только в атрибуте iframeallow). Функция будет разрешена в этом iframe, если документ, загруженный в него, имеет тот же источник, что и URL в атрибуте src iframe.Примечание: Источник
'src'используется только в атрибуте iframeallowи является по умолчаниюallowlistзначением. -
'none': Функция отключена в верхнем уровне и вложенных контекстах просмотра. - <источник(ы)>: Функция разрешена для определенных источников (например,
https://example.com). Источники должны быть разделены пробелом.
Значения
*(разрешить для всех источников) или'none'(отключить для всех источников) могут использоваться только по отдельности, в то время как'self'и'src'могут использоваться с одним или несколькими источниками.Функции имеют по умолчанию список разрешенных источников, который является одним из:
*,'self', или'none'. -
Директивы
-
accelerometerЭкспериментально -
Управляет тем, разрешено ли текущему документу собирать информацию об ускорении устройства через интерфейс
Accelerometer. -
ambient-light-sensorЭкспериментально -
Управляет тем, разрешено ли текущему документу собирать информацию об освещенности окружающей среды устройства через интерфейс
AmbientLightSensor. -
autoplayЭкспериментально -
Управляет тем, разрешено ли текущему документу автоматическое воспроизведение медиа-контента, запрошенного через интерфейс
HTMLMediaElement. Когда эта политика отключена и не было пользовательских жестов,Promise, возвращаемыйHTMLMediaElement.play(), отклонит выполнение сDOMException. Атрибут autoplay у элементов<audio>и<video>будет проигнорирован. -
batteryЭкспериментально -
Управляет разрешением использования API состояния батареи. Когда эта политика отключена,
Promise, возвращаемыйNavigator.getBattery(), отклонит выполнение сNotAllowedErrorDOMException. camera-
Управляет разрешением использования видеовходов. Когда эта политика отключена,
Promise, возвращаемыйgetUserMedia(), отклонит выполнение сNotAllowedErrorDOMException. display-capture-
Управляет разрешением использования метода
getDisplayMedia()для захвата содержимого экрана. Когда эта политика отключена, возвращённый промисgetDisplayMedia()отклонит выполнение сNotAllowedErrorесли разрешение на захват содержимого экрана не получено. -
document-domainЭкспериментально -
Управляет разрешением текущему документу установить
document.domain. Когда эта политика отключена, попытка установитьdocument.domainзавершится ошибкой и вызоветSecurityErrorDOMException. -
encrypted-mediaЭкспериментально -
Управляет разрешением текущему документу использовать API расширений защищённого медиа (EME). Когда эта политика отключена,
Promise, возвращаемыйNavigator.requestMediaKeySystemAccess(), отклонит выполнение сDOMException. execution-while-not-rendered-
Управляет выполнением задач во фреймах, когда они не отображаются (например, если iframe
hiddenилиdisplay: none). execution-while-out-of-viewport-
Управляет выполнением задач во фреймах, когда они находятся за пределами видимой области просмотра.
fullscreen-
Управляет разрешением текущему документу использовать
Element.requestFullscreen(). Когда эта политика отключена, возвращённыйPromiseотклоняет выполнение сTypeError. -
gamepadЭкспериментально -
Управляет разрешением использования Gamepad API. Когда эта политика отключена, вызовы
Navigator.getGamepads()выбросятSecurityErrorDOMException, и событияgamepadconnectedиgamepaddisconnectedне будут срабатывать. geolocation-
Управляет разрешением использования интерфейса
Geolocation. Когда эта политика отключена, вызовыgetCurrentPosition()иwatchPosition()вызовут обратные функции с кодом ошибкиGeolocationPositionErrorPERMISSION_DENIED. -
gyroscopeЭкспериментально -
Управляет тем, разрешено ли текущему документу собирать информацию об ориентации устройства через интерфейс
Gyroscope. -
layout-animationsЭкспериментально Нестандартно -
Управляет разрешением отображения анимаций макета.
-
legacy-image-formatsЭкспериментально Нестандартно -
Управляет разрешением отображения изображений в устаревших форматах.
-
magnetometerЭкспериментально -
Управляет тем, разрешено ли текущему документу собирать информацию об ориентации устройства через интерфейс
Magnetometer. microphone-
Управляет разрешением использования аудиовходов. Когда эта политика отключена,
Promise, возвращаемыйMediaDevices.getUserMedia(), отклонит выполнение сNotAllowedErrorDOMException. -
midiЭкспериментально
-
Управляет тем, разрешено ли текущему документу использовать API Web MIDI. Когда эта политика отключена,
Promise, возвращаемыйNavigator.requestMIDIAccess(), будет отклонен сDOMException. -
Управляет доступностью механизмов, которые позволяют автору страницы контролировать поведение пространственной навигации или полностью отменять её.
-
oversized-imagesЭкспериментальный Нестандартный -
Управляет тем, разрешено ли текущему документу загружать и отображать большие изображения.
-
paymentЭкспериментальный -
Управляет тем, разрешено ли текущему документу использовать API запроса платежа. Когда эта политика включена, конструктор
PaymentRequest()будет выбрасыватьSecurityErrorDOMException. -
picture-in-pictureЭкспериментальный -
Управляет тем, разрешено ли текущему документу воспроизводить видео в режиме «картинка в картинке» через соответствующий API.
-
publickey-credentials-getЭкспериментальный -
Управляет тем, разрешено ли текущему документу использовать API аутентификации веб-сайтов для извлечения уже сохранённых учетных данных с открытым ключом, например, с помощью
navigator.credentials.get({publicKey: ..., ...}). -
speaker-selectionЭкспериментальный -
Управляет тем, разрешено ли текущему документу использовать API устройств аудиовывода для перечисления и выбора динамиков.
-
sync-xhrЭкспериментальный Нестандартный -
Управляет тем, разрешено ли текущему документу выполнять синхронные запросы
XMLHttpRequest. -
unoptimized-imagesЭкспериментальный Нестандартный -
Управляет тем, разрешено ли текущему документу загружать и отображать не оптимизированные изображения.
-
unsized-mediaЭкспериментальный Нестандартный -
Управляет тем, разрешено ли текущему документу изменять размер медиа-элементов после завершения начальной верстки.
-
usbЭкспериментальный -
Управляет тем, разрешено ли текущему документу использовать API WebUSB.
-
screen-wake-lockЭкспериментальный -
Управляет тем, разрешено ли текущему документу использовать API блокировки пробуждения экрана, чтобы указать, что устройство не должно отключать или затемнять экран.
-
Управляет тем, разрешено ли текущему документу использовать
Navigator.share()API совместного использования веб-страниц, чтобы делиться текстом, ссылками, изображениями и другим содержимым с произвольными целевыми приложениями пользователя, например, мобильными приложениями. -
xr-spatial-trackingЭкспериментальный -
Управляет тем, разрешено ли текущему документу использовать API устройства WebXR для взаимодействия с сеансом WebXR.
Пример
Компания SecureCorp Inc. хочет отключить микрофон и геолокационные API в своём приложении. Для этого она может передать заголовок HTTP ответа, чтобы определить политику безопасности:
Feature-Policy: microphone 'none'; geolocation 'none'
Указав ключевое слово 'none' для списка источников, указанные функции будут отключены для всех контекстов просмотра (включая все фреймы iframes), независимо от их источника.
Спецификации
Совместимость с браузерами
| Настольный | Мобильный | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
Feature-Policy |
60 |
79 |
74
Поддерживается только через атрибут
allow в элементах <iframe>. |
Нет |
47 |
11.1
Поддерживается только через атрибут
allow в элементах <iframe>. |
60 |
60 |
79
Поддерживается только через атрибут
allow в элементах <iframe>. |
44 |
11.3
Поддерживается только через атрибут
allow в элементах <iframe>. |
8.0 |
accelerometer |
67 |
79 |
Нет |
Нет |
54 |
Нет |
67 |
67 |
Нет |
48 |
Нет |
9.0 |
ambient-light-sensor |
67 |
79 |
Нет |
Нет |
54 |
Нет |
67 |
67 |
Нет |
48 |
Нет |
9.0 |
autoplay |
64 |
79 |
74 |
Нет |
51 |
Нет |
64 |
64 |
Нет |
47 |
Нет |
9.0 |
battery |
Нет
Будет реализовано, см. ошибку 1007264.
|
Нет
Будет реализовано, см. ошибку 1007264.
|
Нет |
Нет |
Нет
Будет реализовано, см. ошибку 1007264.
|
Нет |
Нет
Будет реализовано, см. ошибку 1007264.
|
Нет
Будет реализовано, см. ошибку 1007264.
|
Нет |
Нет
Будет реализовано, см. ошибку 1007264.
|
Нет |
Нет
Будет реализовано, см. ошибку 1007264.
|
camera |
60 |
79 |
74
Поддерживается только через атрибут
allow в элементах <iframe>. |
Нет |
48 |
11.1 |
60 |
60 |
79
Поддерживается только через атрибут
allow в элементах <iframe>. |
45 |
11.3 |
8.0 |
display-capture |
94 |
94 |
74
Поддерживается только через атрибут
allow в элементах <iframe>. |
Нет |
80 |
13
Поддерживается только через атрибут
allow в элементах <iframe>. |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
document-domain |
77 |
79 |
74 |
Нет |
64 |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
encrypted-media |
60 |
79 |
74 |
Нет |
48 |
Нет |
60 |
60 |
Нет |
45 |
Нет |
8.0 |
fullscreen |
62 |
79 |
74
["Поддерживается только через атрибут
allow в элементах <iframe>.", "До Firefox 80, применение fullscreen к <iframe> (т.е. через атрибут allow) не работает, если атрибут allowfullscreen также отсутствует."] |
Нет |
49 |
Нет |
62 |
62 |
79
["Поддерживается только через атрибут
allow в элементах <iframe>.", "До Firefox 80, применение fullscreen к <iframe> (т.е. через атрибут allow) не работает, если атрибут allowfullscreen также отсутствует."] |
46 |
Нет |
8.0 |
gamepad |
86 |
86 |
91
["Поддерживается только через атрибут
allow в элементах <iframe>.", "Список разрешенных по умолчанию - * вместо self (как требуется спецификацией)."] |
Нет |
72 |
Нет |
Нет |
86 |
91
["Поддерживается только через атрибут
allow в элементах <iframe>.", "Список разрешенных по умолчанию - * вместо self (как требуется спецификацией)."] |
Нет |
Нет |
Нет |
geolocation |
60 |
79 |
74
Поддерживается только через атрибут
allow в элементах <iframe>. |
Нет |
47 |
Нет |
60 |
60 |
79
Поддерживается только через атрибут
allow в элементах <iframe>. |
44 |
Нет |
8.0 |
gyroscope |
67 |
79 |
Нет |
Нет |
54 |
Нет |
67 |
67 |
Нет |
48 |
Нет |
9.0 |
layout-animations |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
legacy-image-formats |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
magnetometer |
67 |
79 |
Нет |
Нет |
54 |
Нет |
Нет |
67 |
Нет |
48 |
Нет |
9.0 |
microphone |
60 |
79 |
74
Поддерживается только через атрибут
allow в элементах <iframe>. |
Нет |
48 |
11.1 |
60 |
60 |
79
Поддерживается только через атрибут
allow в элементах <iframe>. |
45 |
11.3 |
8.0 |
midi |
60 |
79 |
74 |
Нет |
47 |
Нет |
60 |
60 |
Нет |
44 |
Нет |
8.0 |
oversized-images |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
payment |
60 |
79 |
74 |
Нет |
47 |
Нет |
60 |
60 |
Нет |
44 |
Нет |
8.0 |
picture-in-picture |
71 |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
publickey-credentials-get |
84 |
84 |
Нет |
Нет |
Нет |
Нет |
84 |
84 |
Нет |
Нет |
Нет |
14.0 |
screen-wake-lock |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
speaker-selection |
Нет |
Нет |
92
Поддерживается только через атрибут
allow в элементах <iframe>. |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
sync-xhr |
65 |
79 |
Нет |
Нет |
52 |
Нет |
65 |
65 |
Нет |
47 |
Нет |
9.0 |
unoptimized-images |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
unsized-media |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
usb |
60 |
79 |
Нет |
Нет |
47 |
Нет |
Нет |
60 |
Нет |
44 |
Нет |
8.0 |
web-share |
Нет |
Нет |
81
["Поддерживается только через атрибут
allow в элементах <iframe>.", "Firefox распознаёт политику разрешений web-share, но это не оказывает никакого эффекта в версиях Firefox, которые не поддерживают метод share()."] |
Нет |
Нет |
Нет |
Нет |
Нет |
81
Поддерживается только через атрибут
allow в элементах <iframe>. |
Нет |
Нет |
Нет |
xr-spatial-tracking |
79 |
79 |
Нет |
Нет |
66 |
Нет |
Нет |
79 |
Нет |
Нет |
Нет |
12.0 |
См. также
© 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/Feature-Policy