Spec-Zone.ru › HTTP

Политика функций

Политика функций

Предупреждение: В спецификации заголовок был переименован в Permissions-Policy, и эта статья в конечном итоге будет обновлена, чтобы отразить это изменение.

Заголовок HTTP Feature-Policy предоставляет механизм для разрешения и запрета использования функций браузера в собственном фрейме и в содержимом внутри любых <iframe> элементов в документе.

Для получения дополнительной информации см. основную статью Политика функций.

Тип заголовка Заголовок ответа
Запрещенное имя заголовка да

Синтаксис

Feature-Policy: <directive> <allowlist>
<directive>

Директива политики функций, к которой применять allowlist. См. Директивы ниже для списка разрешенных имён директив.

<allowlist>

allowlist — список источников, который принимает одно или несколько следующих значений, разделенных пробелами:

  • *: Функция будет разрешена в этом документе и во всех вложенных контекстах просмотра (iframes), независимо от их источника.
  • 'self': Функция будет разрешена в этом документе и во всех вложенных контекстах просмотра (iframes) в том же источнике. Функция не разрешена в документах с другим источником во вложенных контекстах просмотра.
  • 'src': (Только в атрибуте iframe allow). Функция будет разрешена в этом iframe, если документ, загруженный в него, имеет тот же источник, что и URL в атрибуте src iframe.

    Примечание: Источник 'src' используется только в атрибуте iframe allow и является по умолчанию allowlist значением.

  • 'none': Функция отключена в верхнем уровне и вложенных контекстах просмотра.
  • <источник(ы)>: Функция разрешена для определенных источников (например, https://example.com). Источники должны быть разделены пробелом.

Значения * (разрешить для всех источников) или 'none' (отключить для всех источников) могут использоваться только по отдельности, в то время как 'self' и 'src' могут использоваться с одним или несколькими источниками.

Функции имеют по умолчанию список разрешенных источников, который является одним из: *, 'self', или 'none'.

END_OF_DOCUMENT_MARKER

Директивы

accelerometer Экспериментально

Управляет тем, разрешено ли текущему документу собирать информацию об ускорении устройства через интерфейс Accelerometer.

ambient-light-sensor Экспериментально

Управляет тем, разрешено ли текущему документу собирать информацию об освещенности окружающей среды устройства через интерфейс AmbientLightSensor.

autoplay Экспериментально

Управляет тем, разрешено ли текущему документу автоматическое воспроизведение медиа-контента, запрошенного через интерфейс HTMLMediaElement. Когда эта политика отключена и не было пользовательских жестов, Promise, возвращаемый HTMLMediaElement.play(), отклонит выполнение с DOMException. Атрибут autoplay у элементов <audio> и <video> будет проигнорирован.

battery Экспериментально

Управляет разрешением использования API состояния батареи. Когда эта политика отключена, Promise, возвращаемый Navigator.getBattery(), отклонит выполнение с NotAllowedError DOMException.

camera

Управляет разрешением использования видеовходов. Когда эта политика отключена, Promise, возвращаемый getUserMedia(), отклонит выполнение с NotAllowedError DOMException.

display-capture

Управляет разрешением использования метода getDisplayMedia() для захвата содержимого экрана. Когда эта политика отключена, возвращённый промис getDisplayMedia() отклонит выполнение с NotAllowedError если разрешение на захват содержимого экрана не получено.

document-domain Экспериментально

Управляет разрешением текущему документу установить document.domain. Когда эта политика отключена, попытка установить document.domain завершится ошибкой и вызовет SecurityError DOMException.

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() выбросят SecurityError DOMException, и события gamepadconnected и gamepaddisconnected не будут срабатывать.

geolocation

Управляет разрешением использования интерфейса Geolocation. Когда эта политика отключена, вызовы getCurrentPosition() и watchPosition() вызовут обратные функции с кодом ошибки GeolocationPositionError PERMISSION_DENIED.

gyroscope Экспериментально

Управляет тем, разрешено ли текущему документу собирать информацию об ориентации устройства через интерфейс Gyroscope.

layout-animations Экспериментально Нестандартно

Управляет разрешением отображения анимаций макета.

legacy-image-formats Экспериментально Нестандартно

Управляет разрешением отображения изображений в устаревших форматах.

magnetometer Экспериментально

Управляет тем, разрешено ли текущему документу собирать информацию об ориентации устройства через интерфейс Magnetometer.

microphone

Управляет разрешением использования аудиовходов. Когда эта политика отключена, Promise, возвращаемый MediaDevices.getUserMedia(), отклонит выполнение с NotAllowedError DOMException.

midi Экспериментально
END_OF_DOCUMENT_MARKER

Управляет тем, разрешено ли текущему документу использовать API Web MIDI. Когда эта политика отключена, Promise, возвращаемый Navigator.requestMIDIAccess(), будет отклонен с DOMException.

navigation-override

Управляет доступностью механизмов, которые позволяют автору страницы контролировать поведение пространственной навигации или полностью отменять её.

oversized-images Экспериментальный Нестандартный

Управляет тем, разрешено ли текущему документу загружать и отображать большие изображения.

payment Экспериментальный

Управляет тем, разрешено ли текущему документу использовать API запроса платежа. Когда эта политика включена, конструктор PaymentRequest() будет выбрасывать SecurityError DOMException.

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 блокировки пробуждения экрана, чтобы указать, что устройство не должно отключать или затемнять экран.

web-share Экспериментальный

Управляет тем, разрешено ли текущему документу использовать Navigator.share() API совместного использования веб-страниц, чтобы делиться текстом, ссылками, изображениями и другим содержимым с произвольными целевыми приложениями пользователя, например, мобильными приложениями.

xr-spatial-tracking Экспериментальный

Управляет тем, разрешено ли текущему документу использовать API устройства WebXR для взаимодействия с сеансом WebXR.

Пример

Компания SecureCorp Inc. хочет отключить микрофон и геолокационные API в своём приложении. Для этого она может передать заголовок HTTP ответа, чтобы определить политику безопасности:

Feature-Policy: microphone 'none'; geolocation 'none'

Указав ключевое слово 'none' для списка источников, указанные функции будут отключены для всех контекстов просмотра (включая все фреймы iframes), независимо от их источника.

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

Спецификация
Политика разрешений
# permissions-policy-http-header-field

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

Настольный Мобильный
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

См. также

  • Политика функций
  • Использование политики функций
  • Document.featurePolicy и FeaturePolicy
  • Тестер политики функций (расширение для инструментов разработчика Chrome)
  • Content-Security-Policy
  • Referrer-Policy

© 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

Spec-Zone.ru

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