Для использования большинства API и функций расширений необходимо указать намерение расширения в полях разрешений манифеста . Расширения могут запрашивать следующие категории разрешений, указанные с помощью соответствующих ключей манифеста:
-
"permissions" - Содержит элементы из списка известных строк . Изменения могут вызвать предупреждение .
-
"optional_permissions" - Предоставляется пользователем во время выполнения программы, а не во время установки.
-
"content_scripts.matches" - Содержит один или несколько шаблонов соответствия , позволяющих внедрять скрипты контента в один или несколько хостов. Изменения могут вызвать предупреждение .
-
"host_permissions" - Содержит один или несколько шаблонов соответствия , предоставляющих доступ к одному или нескольким хостам. Изменения могут вызвать предупреждение .
-
"optional_host_permissions" - Предоставляется пользователем во время выполнения программы, а не во время установки.
Права доступа помогают ограничить ущерб в случае заражения вашего расширения вредоносным ПО. Некоторые предупреждения о правах доступа отображаются пользователям для получения их согласия перед установкой или во время выполнения, как подробно описано в разделе «Предупреждения о правах доступа» .
Рассмотрите возможность использования дополнительных разрешений везде, где это позволяет функциональность вашего расширения, чтобы предоставить пользователям осознанный контроль над доступом к ресурсам и данным.
Если API требует наличия разрешения, в его документации объясняется, как его объявить. Пример можно найти в разделе «API хранилища» .
Манифест
Ниже приведён пример раздела разрешений в файле манифеста :
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()из службы расширения и страниц расширения. - С помощью API
chrome.tabsможно считывать и запрашивать конфиденциальные свойства вкладок (url, title и favIconUrl). - Внедрить скрипт контента программным способом .
- Отслеживайте и контролируйте сетевые запросы с помощью API
chrome.webRequest. - Доступ к файлам cookie осуществляется через API
chrome.cookies. - Перенаправление и изменение заголовков запросов и ответов с помощью API
chrome.declarativeNetRequest.
Разрешения с предупреждениями
Когда расширение запрашивает несколько разрешений, и многие из них при установке выдают предупреждения, пользователь увидит список предупреждений, как в следующем примере:

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

Меню расширений Прокрутите вниз, чтобы включить доступ к URL-адресам файлов или режиму инкогнито.

Доступ к URL-адресам файлов и режиму инкогнито разрешен.
Чтобы определить, разрешил ли пользователь доступ, можно вызвать метод extension.isAllowedIncognitoAccess() или extension.isAllowedFileSchemeAccess() .