Чтобы использовать большинство API расширений и функций, необходимо объявить назначение расширения в полях разрешений манифеста. Расширения могут запрашивать разрешения следующих категорий, которые указываются с помощью соответствующих ключей манифеста:
"permissions"- Содержит элементы из списка известных строк. Изменения могут вызвать предупреждение.
"optional_permissions"- Предоставляются пользователем во время выполнения, а не во время установки.
"content_scripts.matches"- Содержит один или несколько шаблонов соответствия, которые позволяют скриптам контента внедряться в один или несколько хостов. Изменения могут вызвать предупреждение.
"host_permissions"- Содержит один или несколько шаблонов соответствия, которые предоставляют доступ к одному или нескольким хостам. Изменения могут вызвать предупреждение.
"optional_host_permissions"- Пользователь предоставляет их во время работы приложения, а не при установке.
Разрешения помогают ограничить ущерб, если расширение будет взломано вредоносным ПО. Некоторые предупреждения о разрешениях показываются пользователям для получения согласия перед установкой или во время работы приложения, как описано в разделе Разрешения с предупреждениями.
По возможности используйте необязательные разрешения, чтобы пользователи могли контролировать доступ к ресурсам и данным.
Если для API требуется разрешение, в документации объясняется, как его объявить. Пример: Storage API.
Манифест
Ниже приведен пример раздела разрешений в файле manifest.
manifest.json:
{
"name": "Permissions Extension",
...
"permissions": [
"activeTab",
"contextMenus",
"storage"
],
"optional_permissions": [
"topSites",
],
"host_permissions": [
"https://www.developer.chrome.com/*"
],
"optional_host_permissions":[
"https://*/*",
"http://*/*"
],
...
"manifest_version": 3
}
Разрешения для организаторов
Разрешения хоста позволяют расширениям взаимодействовать с шаблонами соответствия URL. Для работы некоторых API Chrome требуются разрешения хоста в дополнение к собственным разрешениям API, которые описаны на каждой справочной странице. Вот несколько примеров:
- Выполнять запросы
fetch()из сервисного работника и страниц расширения. - Чтение и запрос конфиденциальных свойств вкладок (url, title и favIconUrl) с помощью API
browser.tabs. - Программно внедрите скрипт контента.
- Отслеживайте сетевые запросы и управляйте ими с помощью API
browser.webRequest. - Получите доступ к файлам cookie с помощью
browser.cookiesAPI. - Перенаправлять и изменять запросы и заголовки ответов с помощью API
browser.declarativeNetRequest.
В некоторых случаях разрешения хоста не требуются. Вот некоторые из них:
- Использование API
chrome.tabsдля доступа к вкладкам и их изменения, включая доступ к URL вкладки, если у вас есть разрешениеtabs. - Взаимодействие с браузером с помощью API
chrome.debugger. - Разрешить внедрение скрипта контента, объявленного в манифесте.
Разрешения с предупреждениями
Если расширение запрашивает несколько разрешений, многие из которых вызывают предупреждения при установке, пользователь увидит список предупреждений, как в следующем примере:

Пользователи больше доверяют расширениям, которые не вызывают предупреждений или запрашивают разрешения с объяснением. Чтобы не пугать пользователей, запрашивайте необязательные разрешения или используйте менее мощный API. Рекомендации по работе с предупреждениями приведены в руководстве по предупреждениям о разрешениях. Предупреждения, относящиеся к конкретным разрешениям, перечислены в справочном списке разрешений.
Добавление или изменение шаблонов соответствия в полях "host_permissions" и "content_scripts.matches" файла манифеста также приведет к появлению предупреждения. Подробнее о том, как изменить разрешения…
Открыть доступ
Если расширение должно работать с URL file:// или в режиме инкогнито, пользователи должны предоставить ему доступ на странице сведений. Инструкции по открытию страницы сведений можно найти в разделе Как управлять расширениями.
Разрешить доступ к URL файлов и страницам в режиме инкогнито
- Нажмите правой кнопкой мыши на значок расширения в Chrome.
Выберите Управление расширениями.
Меню расширений Прокрутите вниз, чтобы разрешить доступ к URL файлов или режиму инкогнито.
Доступ к URL файлов и режиму инкогнито включен.
Чтобы определить, разрешил ли пользователь доступ, вызовите extension.isAllowedIncognitoAccess() или extension.isAllowedFileSchemeAccess().