Spec-Zone.ru › Web APIs

API разрешений

Примечание: Эта функция доступна в Потоках веб-работы.

API разрешений предоставляет согласованный программно-ориентированный способ запроса статуса разрешений API, присвоенных текущему контексту, например, веб-странице или потоку. Например, его можно использовать для определения того, было ли разрешение на доступ к определенной функции или API предоставлено, отклонено или требует специального разрешения пользователя.

Концепции и использование

Исторически разные API обрабатывают свои разрешения несовместимым образом — например, API уведомлений предоставлял собственные методы для запроса разрешений и проверки статуса разрешений, в то время как API геолокации этого не делал. API разрешений предоставляет инструменты для разработчиков, чтобы реализовать согласованный пользовательский опыт работы с разрешениями.

Разрешения из этого API эффективно агрегируют все ограничения безопасности для контекста, включая любое требование к API для использования в защищенном контексте, ограничения Permissions-Policy, примененные к документу, требования к взаимодействию с пользователем и запросы у пользователя. Таким образом, например, если API ограничен политикой разрешений, возвращаемое разрешение будет denied и пользователь не будет приглашен для предоставления доступа.

Свойство permissions стало доступно в объекте Navigator, как в стандартном контексте браузера, так и в контексте потока (WorkerNavigator — поэтому проверка разрешений доступна внутри потоков), и возвращает объект Permissions, который предоставляет доступ к функциональности API разрешений.

После получения этого объекта вы можете использовать метод Permissions.query(), чтобы вернуть промис, который разрешается со статусом PermissionStatus для определенного API.

Запрос разрешения

Если статус разрешения prompt, пользователь должен подтвердить запрос, чтобы предоставить доступ к функции.

Механизм, который запускает этот запрос, будет зависеть от конкретного API — он не определен как часть API разрешений. Обычно триггером является код, вызывающий метод для доступа или открытия функции, или код, регистрирующий обработчик уведомлений от функции, которая затем будет к ней обращаться.

Обратите внимание, что не все функции требуют запроса. Разрешение может быть предоставлено Permission Policy, неявно путем временного включения или с помощью какого-либо другого механизма.

Отмена разрешения

Отмена разрешения не управляется API. Более конкретно, метод Permissions.revoke() был предложен, но с тех пор был удален из тех браузеров, где он был реализован.

Пользователи могут вручную отменить разрешение для определенных сайтов, используя настройки браузера:

  • Firefox: Меню > Настройки > Конфиденциальность и безопасность > Разрешения (затем выберите кнопку Настройки для интересующего разрешения).
  • Chrome: Меню > Настройки > Дополнительные настройки. В разделе Конфиденциальность нажмите Настройки контента. В открывшемся диалоговом окне найдите раздел Местоположение и выберите Спрашивать, когда сайт пытается…. Наконец, нажмите Управление исключениями и удалите разрешения, предоставленные сайтам, которые вас интересуют.

API, учитывающие разрешения

Не все статусы разрешений API могут быть запрошены с помощью API разрешений. Неполный список API, учитывающих разрешения, включает:

  • API фоновой синхронизации: background-sync (должно быть всегда предоставлено)
  • Clipboard_API: clipboard-read, clipboard-write
  • API вычислительной нагрузки: compute-pressure
  • API геолокации: geolocation
  • API доступа к локальным шрифтам: local-fonts
  • API захвата медиа и потоков: microphone, camera
  • API уведомлений: notifications
  • API обработчика платежей: payment-handler
  • API push-уведомлений: push
  • API блокировки экрана: screen-wake-lock
  • API датчиков: accelerometer, gyroscope, magnetometer, ambient-light-sensor
  • API доступа к хранилищу: storage-access, top-level-storage-access
  • API хранилища: persistent-storage
  • API Bluetooth: bluetooth
  • API MIDI: midi
  • API управления окнами: window-management

Интерфейсы

Permissions

Предоставляет основную функциональность API разрешений, такие как методы для запроса и отмены разрешений.

PermissionStatus

Предоставляет доступ к текущему статусу разрешения и обработчику событий для реагирования на изменения статуса разрешения.

Расширения для других интерфейсов

Navigator.permissions и WorkerNavigator.permissions Только чтение

Предоставляет доступ к объекту Permissions соответственно из основного контекста и контекста потока.

Примеры

Мы создали пример под названием Поиск местоположения. Вы можете запустить пример онлайн, просмотреть исходный код на GitHub или узнать больше о его работе в нашей статье Использование API разрешений.

Пример Permissions.query() также показывает код, который тестирует большинство разрешений в текущем браузере и записывает результат.

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

Спецификация
Разрешения

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

Десктоп Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Permissions_API 43 79 133 30 16.4 43 133 30 16.4 4.0 Нет
Десктоп Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Permissions_API 43 79 46 30 16 43 46 30 16 4.0 Нет
Десктоп Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Permissions_API 43 79 46 30 16 43 46 30 16 4.0 Нет
permission_accelerometer 62 79 Нет 49 Нет 62 Нет 46 Нет 8.0 Нет
permission_accessibility-events 62 79 Нет 49 Нет 62 Нет 46 Нет 8.0 Нет
permission_ambient-light-sensor 62 79 Нет 49 Нет 62 Нет Нет Нет Нет Нет
permission_background-sync 62 79 Нет 49 Нет 62 Нет 46 Нет 8.0 Нет
permission_camera 64 79 132 51 16 64 132 47 16 9.0 Нет
permission_clipboard-read 64 79 Нет 51 Нет 64 Нет 47 Нет 9.0 Нет
permission_clipboard-write 64 79 Нет 51 Нет 64 Нет 47 Нет 9.0 Нет
permission_compute-pressure 125 125 Нет 111 Нет Нет Нет Нет Нет Нет Нет
permission_geolocation 43 79 46 30 16 43 46 30 16 4.0 Нет
permission_gyroscope 51 79 Нет 38 Нет 51 Нет 41 Нет 5.0 Нет
permission_local-fonts 103 103 Нет Нет Нет Нет Нет Нет Нет Нет Нет
permission_magnetometer 62 79 Нет 49 Нет 62 Нет 46 Нет 8.0 Нет
permission_microphone 64 79 132 51 16 64 132 47 16 9.0 Нет
permission_midi 43 79 110 30 Нет 43 110 30 Нет 4.0 Нет
permission_notifications 43 79
46Alias for the push permission (returns the same value).
30 16.4 43
46Alias for the push permission (returns the same value).
30 16.4 4.0 Нет
permission_payment-handler 66 79 Нет 53 Нет 66 Нет 47 Нет 9.0 Нет
permission_persistent-storage 71 79 53 58 Нет 71 53 50 Нет 10.0 Нет
permission_push 43 79
46Alias for the notifications permission (returns the same value).
30 16.5 43
46Alias for the notifications permission (returns the same value).
30 16.5 4.0 Нет
permission_screen-wake-lock 84 84 126 70 Нет 84 126 60 Нет 14.0 Нет
permission_storage-access 119 85 117 105 Нет 120 117 80 Нет 25.0 Нет
permission_top-level-storage-access 113 113 Нет 99 Нет 120 Нет 80 Нет 25.0 Нет
permission_window-management 111 111 Нет 97 Нет Нет Нет Нет Нет Нет Нет
query 43 79 46 30 16 43 46 30 16 4.0 Нет
request 46 79 Нет 33 Нет 46 Нет Нет Нет Нет Нет
requestAll 48 79 Нет 35 Нет 48 Нет Нет Нет Нет Нет
revoke 46 79 5147–51 33 Нет 46 47–51 Нет Нет Нет Нет

api.Разрешения

Таблицы BCD загружаются только в браузере

api.Навигатор.разрешения

Таблицы BCD загружаются только в браузере

api.РабочийНавигатор.разрешения

Таблицы BCD загружаются только в браузере

См. также

  • Использование API разрешений
  • Использование API разрешений для определения частоты предоставления или отказа от доступа к камере
  • Notification.permission
  • Конфиденциальность, разрешения и безопасность информации

© 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/Permissions_API

Spec-Zone.ru

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