Spazio di archiviazione e cookie

Le estensioni possono memorizzare i cookie e accedere alle API di archiviazione web in modo simile a un normale sito web. Tuttavia, in alcuni casi si comportano in modo diverso nelle estensioni.

Per informazioni sull'API delle estensioni, consulta browser.storage.

Archiviazione

Spesso è consigliabile utilizzare le API di archiviazione della piattaforma web nelle estensioni. Questa sezione esplora il comportamento di queste API nel contesto di un'estensione, che a volte può differire da quello sul web.

Persistenza

Lo spazio di archiviazione delle estensioni non viene cancellato quando un utente cancella i dati di navigazione. Ciò vale per tutti i dati archiviati utilizzando le API di archiviazione web (ad esempio Local Storage e IndexedDB).

Per impostazione predefinita, le estensioni sono soggette alle normali limitazioni di quota per lo spazio di archiviazione, che possono essere verificate chiamando navigator.storage.estimate(). Lo spazio di archiviazione può anche essere rimosso in caso di forte pressione sulla memoria, anche se è raro. Per evitare questo problema:

  • Richiedi l'autorizzazione "unlimitedStorage", che influisce sia sulle API di archiviazione web che sulle estensioni ed esenta le estensioni dalle limitazioni di quota e dall'eliminazione.
  • Chiama il numero navigator.storage.persist() per proteggerti dallo sfratto.

Lo spazio di archiviazione dell'estensione è condiviso nell'origine dell'estensione, inclusi il service worker dell'estensione, qualsiasi pagina dell'estensione (inclusi popup e riquadro laterale) e documenti fuori schermo. Negli script di contenuti, la chiamata alle API di archiviazione web accede ai dati della pagina host in cui viene inserito lo script di contenuti e non all'estensione.

Accesso nei service worker

Le API IndexedDB e Cache Storage sono accessibili nei service worker. Tuttavia, Local Storage e Session Storage non lo sono.

Se devi accedere alla memoria locale o alla memoria di sessione dal service worker, utilizza un documento offscreen.

Partizionamento

Il partizionamento prevede l'introduzione di chiavi per i dati archiviati per limitarne l'accesso. Storicamente, l'archiviazione è stata indicizzata in base all'origine.

A partire da Chrome 115, il partizionamento dello spazio di archiviazione introduce modifiche al modo in cui vengono definite le chiavi di partizionamento per impedire determinati tipi di monitoraggio tra siti. In pratica, ciò significa che se il sito A incorpora un iframe contenente il sito B, il sito B non potrà accedere allo stesso spazio di archiviazione che avrebbe normalmente se visitato direttamente.

Per mitigare l'impatto di questa modifica sulle estensioni, si applicano due esenzioni:

  • Se una pagina con lo schema chrome-extension:// è incorporata in un sito, il partizionamento dello spazio di archiviazione non verrà applicato e l'estensione avrà accesso alla sua partizione di primo livello.
  • Se una pagina con lo schema chrome-extension:// include un iframe e l'estensione dispone di autorizzazioni host per il sito che sta incorporando, anche questo sito avrà accesso alla sua partizione di primo livello.

Cookie

I cookie forniscono un modo per memorizzare coppie chiave-valore associate a un dominio e a un percorso specifici. Hanno un valore limitato nelle estensioni, ma comprendere il loro comportamento può essere utile se hai un caso d'uso specifico o se hai raggruppato uno script di terze parti che li utilizza nella sua implementazione.

Cookie sicuri

L'attributo cookie Secure è supportato solo per lo schema https://. Di conseguenza, le pagine chrome-extension:// non sono in grado di impostare cookie con questo attributo.

Ciò significa anche che le pagine delle estensioni non possono utilizzare altri attributi dei cookie in cui è richiesto l'attributo Secure:

Partizionamento e comportamento SameSite

I cookie impostati sulle pagine chrome-extension:// utilizzano sempre SameSite=Lax. Di conseguenza, i cookie impostati da un'estensione sulla propria origine non possono mai essere accessibili nei frame e il partizionamento non è pertinente.

Per i cookie associati a siti di terze parti, ad esempio per un sito di terze parti caricato in un frame su una pagina di estensione o una richiesta effettuata da una pagina di estensione a un'origine di terze parti, i cookie si comportano come sul web, tranne che in due modi:

  • I cookie di terze parti non vengono mai bloccati nemmeno nei subframe se la pagina di primo livello per una determinata scheda è una pagina chrome-extension://.
  • Le richieste da un'estensione a una terza parte vengono trattate come richieste dallo stesso sito se l'estensione dispone delle autorizzazioni host per la terza parte. Ciò significa che SameSite=Strict i cookie possono essere inviati. Tieni presente che questo vale solo per le richieste di rete, non per l'accesso tramite document.cookie in JavaScript e non si applica se i cookie di terze parti sono bloccati.

Tieni presente che le impostazioni relative ai cookie di terze parti sono interessate dal lavoro di Privacy Sandbox e vengono modificate in base alla sua cronologia.

L'API browser.cookies fornisce il controllo sulla chiave di partizione da utilizzare con ogni metodo API. Per saperne di più, consulta il Riferimento API.