Объявить разрешения

Чтобы использовать большинство 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, которые описаны на каждой справочной странице. Вот несколько примеров:

Разрешения с предупреждениями

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

Предупреждения о разрешении расширения при установке

Пользователи с большей вероятностью будут доверять расширению с ограниченным количеством предупреждений или когда им разъясняются разрешения. Рассмотрите возможность реализации дополнительных разрешений или менее мощного API, чтобы избежать тревожных предупреждений. Рекомендации по использованию предупреждений см. в разделе Рекомендации по предупреждениям о разрешениях . Конкретные предупреждения перечислены вместе с разрешениями, к которым они применяются, в справочном списке «Разрешения» .

Добавление или изменение шаблонов соответствия в полях "host_permissions" и "content_scripts.matches" файла манифеста также вызовет предупреждение . Дополнительную информацию см. в разделе Обновление разрешений .

Разрешить доступ

Если ваше расширение должно запускаться по URL-адресам file:// или работать в режиме инкогнито, пользователи должны предоставить расширению доступ на странице сведений. Инструкции по открытию страницы сведений можно найти в разделе «Управление расширениями» .

Разрешить доступ к URL-адресам файлов и страницам в режиме инкогнито.

  1. Щелкните правой кнопкой мыши значок расширения в Chrome.
  2. Выберите «Управление расширением» .

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

    Разрешить URL-адреса файлов и режим инкогнито на странице сведений о расширении.
    Доступ разрешен к URL-адресам файлов и режиму инкогнито.

Чтобы определить, разрешил ли пользователь доступ, вы можете вызвать extension.isAllowedIncognitoAccess() или extension.isAllowedFileSchemeAccess() .