Para usar a maioria das APIs de extensão e dos recursos, é necessário declarar a intent da sua extensão nos campos de permissões do manifesto. As extensões podem solicitar as seguintes categorias de permissões, que são especificadas usando as respectivas chaves de manifesto:
"permissions"
- Contém itens de uma lista de strings conhecidas. As mudanças podem acionar um aviso.
"optional_permissions"
- Concedidos pelo usuário no momento da execução, e não na instalação.
"content_scripts.matches"
- Contém um ou mais padrões de correspondência que permitem que scripts de conteúdo sejam injetados em um ou mais hosts. As mudanças podem acionar um aviso.
"host_permissions"
- Contém um ou mais padrões de correspondência que dão acesso a um ou mais hosts. As mudanças podem acionar um aviso.
"optional_host_permissions"
- Fornecidas pelo usuário no momento da execução, e não na instalação.
As permissões ajudam a limitar os danos se a extensão for comprometida por malware. Alguns avisos de permissão são exibidos aos usuários solicitando o consentimento antes de ou durante a execução, conforme detalhado em Permissão com avisos.
Use permissões opcionais sempre que a funcionalidade da sua extensão permite, para fornecer aos usuários o controle informado sobre o acesso a recursos e dados.
Se uma API exigir uma permissão, a documentação explica como declará-la. Para um exemplo, consulte API Storage.
Manifesto
Este é um exemplo da seção de permissões de um arquivo de manifesto:
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
}
Permissões do host
As permissões de host permitem que as extensões interajam com os padrões de correspondência do URL. Algumas APIs do Chrome exigem permissões de host, além de suas próprias permissões de API, que estão documentadas em cada página de referência. Veja alguns exemplos:
- Faça solicitações
fetch()
das páginas de extensão e do service worker de extensão. - Leia e consulte as propriedades da guia confidenciais (URL, título e favIconUrl) usando a API
chrome.tabs
. - Injete um script de conteúdo de maneira programática.
- Monitore e controle as solicitações de rede com a API
chrome.webRequest
. - Acessar cookies com a API
chrome.cookies
. - Redirecione e modifique solicitações e cabeçalhos de resposta usando a API
chrome.declarativeNetRequest
.
Permissões com avisos
Quando uma extensão solicita várias permissões e muitas delas exibem avisos na instalação, o usuário verá uma lista de avisos, como no exemplo a seguir:
É mais provável que os usuários confiem em uma extensão com avisos limitados ou quando as permissões são explicadas a eles. Considere implementar permissões opcionais ou uma API menos eficiente para evitar alarmes de alertas. Para conferir as práticas recomendadas para avisos, consulte as Diretrizes de avisos de permissão. Específicas avisos são listados com as permissões às quais se aplicam na Lista de referências de Permissions.
adicionar ou mudar padrões de correspondência em "host_permissions"
e "content_scripts.matches"
;
do arquivo de manifesto também vai acionar um aviso. Para saber mais, consulte
Atualização de permissões.
Permitir acesso
Se sua extensão precisar ser executada em URLs do file://
ou funcionar no modo de navegação anônima, os usuários precisarão conceder acesso à extensão na página de detalhes. Você pode encontrar instruções para abrir a página de detalhes em Gerenciar suas extensões.
Permitir acesso a URLs de arquivos e páginas anônimas
- Clique com o botão direito do mouse no ícone da extensão no Chrome.
Escolha Gerenciar extensão.
Role para baixo para ativar o acesso a URLs de arquivos ou ao modo de navegação anônima.
Para detectar se o usuário permitiu o acesso, chame extension.isAllowedIncognitoAccess()
ou
extension.isAllowedFileSchemeAccess()