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