L'autorizzazione "activeTab"
concede a un'estensione l'accesso temporaneo alla scheda attualmente attiva quando l'utente richiama l'estensione, ad esempio facendo clic sulla sua azione. L'accesso alla scheda dura mentre l'utente è nella pagina in questione e viene revocato quando l'utente esce dalla scheda o la chiude.
Ad esempio, se l'utente richiama l'estensione su https://example.com e poi visita https://example.com/foo, l'estensione continuerà ad avere accesso alla pagina. Se l'utente visita il sito https://chromium.org, l'accesso viene revocato.
Questa funzione è un'alternativa per molti utilizzi di "<all_urls>"
, ma mostra nessun messaggio di avviso durante l'installazione:
Senza "activeTab"
:
Con "activeTab"
:
Esempio
Guarda l'estensione di esempio Page Redder:
manifest.json:
{
"name": "Page Redder",
"version": "2.0",
"permissions": [
"activeTab",
"scripting"
],
"background": {
"service_worker": "service-worker.js"
},
"action": {
"default_title": "Make this page red"
},
"manifest_version": 3
}
un dipendente di un servizio:
function reddenPage() {
document.body.style.backgroundColor = 'red';
}
chrome.action.onClicked.addListener((tab) => {
if (!tab.url.includes('chrome://')) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
Motivazione
Prendiamo in considerazione un'estensione di clip web che abbia un'azione e una voce di menu contestuale. Questa estensione potrebbe dover accedere alle schede solo quando viene fatto clic sulla sua azione o quando viene eseguita la voce di menu contestuale.
Senza "activeTab"
, questa estensione dovrebbe richiedere l'accesso completo e permanente a ogni sito web, proprio per poter svolgere il proprio lavoro se fosse stata richiamata dall'utente. È un grande potere da affidare a un'estensione così semplice. E se l'estensione viene compromessa, l'utente malintenzionato
può accedere a tutto ciò che conteneva.
Al contrario, un'estensione con l'autorizzazione "activeTab"
ottiene l'accesso a una scheda solo in risposta
a un gesto esplicito dell'utente. Se l'estensione viene compromessa, l'utente malintenzionato deve attendere che l'utente richiami l'estensione prima di ottenere l'accesso. L'accesso dura solo fino a quando la scheda
viene aperta o chiusa.
Cosa consente "activeTab"
Mentre per una scheda è abilitata l'autorizzazione "activeTab"
, un'estensione può:
- Chiama
scripting.insertCSS()
oscripting.executeScript()
in quella scheda se è stata dichiarata anche l'autorizzazione"scripting"
(come nell'esempio precedente). - Recupera l'URL, il titolo e la favicon per la scheda tramite un'API che restituisce un oggetto
tabs.Tab
(in pratica,"activeTab"
concede temporaneamente l'autorizzazione host). - Intercetta le richieste di rete nella scheda verso l'origine del frame principale della scheda utilizzando l'API webRequest. L'estensione riceve temporaneamente le autorizzazioni di host per l'origine del frame principale della scheda.
Richiamo di activeTab in corso...
I seguenti gesti dell'utente attivano l'autorizzazione "activeTab"
:
- Esecuzione di un'azione
- Esecuzione di una voce di menu contestuale
- Esecuzione di una scorciatoia da tastiera dall'API Commands
- Accettare un suggerimento dall'API omnibox