chrome.permissions

refresh date: 2026-09-25 robots: noindex

Descrizione

Utilizza l'API chrome.permissions per richiedere le autorizzazioni facoltative dichiarate in fase di runtime anziché di installazione, in modo che gli utenti capiscano perché sono necessarie e concedano solo quelle necessarie.

Panoramica

Gli avvisi relativi alle autorizzazioni servono a descrivere le funzionalità concesse da un'API, ma alcuni di questi avvisi potrebbero non essere ovvi. L'API Permissions consente agli sviluppatori di spiegare gli avvisi relativi alle autorizzazioni e di introdurre gradualmente nuove funzionalità, offrendo agli utenti un'introduzione senza rischi all'estensione. In questo modo, gli utenti possono specificare il livello di accesso che sono disposti a concedere e le funzionalità che vogliono attivare.

Ad esempio, la funzionalità di base dell'estensione per le autorizzazioni facoltative è l'override della pagina Nuova scheda. Una funzionalità mostra l'obiettivo giornaliero dell'utente. Questa funzionalità richiede solo l'autorizzazione storage, che non include un avviso. L'estensione ha una funzionalità aggiuntiva che gli utenti possono attivare facendo clic sul seguente pulsante:

Pulsante di estensione che attiva funzionalità aggiuntive

La visualizzazione dei siti più visitati dall'utente richiede l'autorizzazione topSites, che presenta il seguente avviso.

Avviso relativo all'estensione per l'API topSites

Implementazione delle autorizzazioni facoltative

Passaggio 1: decidi quali autorizzazioni sono obbligatorie e quali facoltative

Un'estensione può dichiarare autorizzazioni sia obbligatorie che facoltative. In generale, devi:

  • Utilizza le autorizzazioni obbligatorie quando sono necessarie per la funzionalità di base dell'estensione.
  • Utilizza le autorizzazioni facoltative quando sono necessarie per le funzionalità facoltative dell'estensione.

Vantaggi delle autorizzazioni obbligatorie:

  • Meno prompt: un'estensione può chiedere all'utente una sola volta di accettare tutte le autorizzazioni.
  • Sviluppo più semplice: è garantita la presenza delle autorizzazioni richieste.

Vantaggi delle autorizzazioni facoltative:

  • Maggiore sicurezza: le estensioni vengono eseguite con meno autorizzazioni, poiché gli utenti attivano solo quelle necessarie.
  • Informazioni migliori per gli utenti: un'estensione può spiegare perché ha bisogno di una determinata autorizzazione quando l'utente attiva la funzionalità pertinente.
  • Upgrade più semplici: quando esegui l'upgrade dell'estensione, Chrome non la disattiverà per gli utenti se l'upgrade aggiunge autorizzazioni facoltative anziché obbligatorie.

Passaggio 2: dichiara le autorizzazioni facoltative nel manifest

Dichiara le autorizzazioni facoltative nel manifest dell'estensione con la chiave optional_permissions, utilizzando lo stesso formato del campo permissions:

{
  "name": "My extension",
  ...
  "optional_permissions": ["tabs"],
  "optional_host_permissions": ["https://www.google.com/"],
  ...
}

Se vuoi richiedere host che scopri solo in fase di runtime, includi "https://*/*" nel campo optional_host_permissions dell'estensione. In questo modo puoi specificare qualsiasi origine in Permissions.origins, purché abbia uno schema corrispondente.

Autorizzazioni che non possono essere specificate come facoltative

La maggior parte delle autorizzazioni delle estensioni di Chrome può essere specificata come facoltativa, con le seguenti eccezioni.

Autorizzazione Descrizione
"debugger" L'API chrome.debugger funge da trasporto alternativo per il protocollo di debug remoto di Chrome.
"declarativeNetRequest" Concede all'estensione l'accesso all'API chrome.declarativeNetRequest.
"devtools" Consente all'estensione di espandere la funzionalità di Chrome DevTools.
"experimental" Solo Canary e canale Dev. Concede all'estensione l'accesso alle API chrome.experimental.
"geolocation" Consente all'estensione di utilizzare l'API di geolocalizzazione HTML5.
"mdns" Concede all'estensione l'accesso all'API chrome.mdns.
"proxy" Concede all'estensione l'accesso all'API chrome.proxy per gestire le impostazioni del proxy di Chrome.
"tts" L'API chrome.tts riproduce la sintesi vocale (TTS) sintetizzata.
"ttsEngine" L'API chrome.ttsEngine implementa un motore di sintesi vocale (TTS) utilizzando un'estensione.
"wallpaper" Solo ChromeOS. Utilizza l'API chrome.wallpaper per modificare lo sfondo di ChromeOS.

Per ulteriori informazioni sulle autorizzazioni disponibili e sui relativi avvisi, consulta Dichiarare le autorizzazioni e avvisare gli utenti.

Passaggio 3: richiedi le autorizzazioni facoltative

Richiedi le autorizzazioni dall'interno di un'attivazione dall'utente utilizzando permissions.request():

document.querySelector('#my-button').addEventListener('click', (event) => {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request({
    permissions: ['tabs'],
    origins: ['https://www.google.com/']
  }, (granted) => {
    // The callback argument will be true if the user granted the permissions.
    if (granted) {
      doSomething();
    } else {
      doSomethingElse();
    }
  });
});

Chrome chiede all'utente se l'aggiunta delle autorizzazioni genera messaggi di avviso diversi da quelli che l'utente ha già visto e accettato. Ad esempio, il codice precedente potrebbe generare un prompt come questo:

prompt di conferma dell'autorizzazione di esempio

Passaggio 4: controlla le autorizzazioni correnti dell'estensione

Per verificare se l'estensione dispone di un'autorizzazione o di un insieme di autorizzazioni specifici, utilizza permission.contains():

chrome.permissions.contains({
  permissions: ['tabs'],
  origins: ['https://www.google.com/']
}, (result) => {
  if (result) {
    // The extension has the permissions.
  } else {
    // The extension doesn't have the permissions.
  }
});

Passaggio 5: rimuovi le autorizzazioni

Ti consigliamo di rimuovere le autorizzazioni quando non ne hai più bisogno. Dopo che un'autorizzazione è stata rimossa, la chiamata a permissions.request() di solito aggiunge nuovamente l'autorizzazione senza chiedere conferma all'utente.

chrome.permissions.remove({
  permissions: ['tabs'],
  origins: ['https://www.google.com/']
}, (removed) => {
  if (removed) {
    // The permissions have been removed.
  } else {
    // The permissions have not been removed (e.g., you tried to remove
    // required permissions).
  }
});

Tipi

Permissions

Proprietà

  • origins

    string[] facoltativo

    L'elenco delle autorizzazioni host, incluse quelle specificate nelle chiavi optional_permissions o permissions nel manifest e quelle associate agli script di contenuti.

  • autorizzazioni

    string[] facoltativo

    Elenco di autorizzazioni denominate (non include host o origini).

Metodi

contains()

Promise
chrome.permissions.contains(
  permissions: Permissions,
  callback?: function,
)
: Promise<boolean>

Controlla se l'estensione dispone delle autorizzazioni specificate.

Parametri

  • autorizzazioni
  • callback

    funzione elemento facoltativo

    Il parametro callback ha il seguente aspetto:

    (result: boolean) => void

    • risultato

      booleano

      True se l'estensione dispone delle autorizzazioni specificate. Se un'origine è specificata sia come autorizzazione facoltativa sia come pattern di corrispondenza dello script di contenuti, verrà restituito false, a meno che non vengano concesse entrambe le autorizzazioni.

Resi

  • Promise<boolean>

    Chrome 96 e versioni successive

    Le promise sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.

getAll()

Promise
chrome.permissions.getAll(
  callback?: function,
)
: Promise<Permissions>

Recupera l'insieme di autorizzazioni corrente dell'estensione.

Parametri

  • callback

    funzione elemento facoltativo

    Il parametro callback ha il seguente aspetto:

    (permissions: Permissions) => void

    • autorizzazioni

      Le autorizzazioni attive dell'estensione. Tieni presente che la proprietà origins conterrà le origini concesse tra quelle specificate nelle chiavi permissions e optional_permissions nel manifest e quelle associate agli script di contenuti.

Resi

  • Promise<Permissions>

    Chrome 96 e versioni successive

    Le promise sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.

remove()

Promise
chrome.permissions.remove(
  permissions: Permissions,
  callback?: function,
)
: Promise<boolean>

Rimuove l'accesso alle autorizzazioni specificate. Se si verificano problemi durante la rimozione delle autorizzazioni, la promise verrà rifiutata.

Parametri

  • autorizzazioni
  • callback

    funzione elemento facoltativo

    Il parametro callback ha il seguente aspetto:

    (removed: boolean) => void

    • rimosso

      booleano

      True se le autorizzazioni sono state rimosse.

Resi

  • Promise<boolean>

    Chrome 96 e versioni successive

    Le promise sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.

request()

Promise
chrome.permissions.request(
  permissions: Permissions,
  callback?: function,
)
: Promise<boolean>

Richiede l'accesso alle autorizzazioni specificate, mostrando un messaggio all'utente, se necessario. Queste autorizzazioni devono essere definite nel campo optional_permissions del file manifest o essere autorizzazioni richieste che sono state negate dall'utente. I percorsi nei pattern di origine verranno ignorati. Puoi richiedere sottoinsiemi di autorizzazioni di origine facoltative; ad esempio, se specifichi *://*\/* nella sezione optional_permissions del manifest, puoi richiedere http://example.com/. Se si verificano problemi durante la richiesta delle autorizzazioni, la promise verrà rifiutata.

Parametri

  • autorizzazioni
  • callback

    funzione elemento facoltativo

    Il parametro callback ha il seguente aspetto:

    (granted: boolean) => void

    • granted

      booleano

      True se l'utente ha concesso le autorizzazioni specificate.

Resi

  • Promise<boolean>

    Chrome 96 e versioni successive

    Le promise sono supportate solo per Manifest V3 e versioni successive, mentre le altre piattaforme devono utilizzare i callback.

Eventi

onAdded

chrome.permissions.onAdded.addListener(
  callback: function,
)

Viene attivato quando l'estensione acquisisce nuove autorizzazioni.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (permissions: Permissions) => void

onRemoved

chrome.permissions.onRemoved.addListener(
  callback: function,
)

Viene attivato quando l'accesso alle autorizzazioni è stato rimosso dall'estensione.

Parametri

  • callback

    funzione

    Il parametro callback ha il seguente aspetto:

    (permissions: Permissions) => void