Descrizione
Utilizza l'API chrome.contentSettings
per modificare le impostazioni che controllano se i siti web possono utilizzare funzioni come cookie, JavaScript e plug-in. In termini più generali, le impostazioni dei contenuti ti consentono di personalizzare il comportamento di Chrome in base al sito, anziché a livello globale.
Autorizzazioni
contentSettings
Per utilizzare l'API, devi dichiarare l'autorizzazione "contentSettings"
nel file manifest dell'estensione. Ad
esempio:
{
"name": "My extension",
...
"permissions": [
"contentSettings"
],
...
}
Concetti e utilizzo
Pattern di impostazioni dei contenuti
Puoi utilizzare i pattern per specificare i siti web interessati da ogni impostazione dei contenuti. Ad esempio,
https://*.youtube.com/*
specifica youtube.com e tutti i relativi sottodomini. La sintassi per i pattern di
impostazione dei contenuti è la stessa dei pattern di corrispondenza, con alcune differenze:
- Per gli URL
http
,https
eftp
, il percorso deve essere un carattere jolly (/*
). Per gli URLfile
, il percorso deve essere completamente specificato e non deve contenere caratteri jolly. - A differenza dei pattern di corrispondenza, i pattern di impostazione dei contenuti possono specificare un numero di porta. Se viene specificato un numero di porta, il pattern corrisponde solo ai siti web con quella porta. Se non viene specificato alcun numero di porta, il pattern corrisponde a tutte le porte.
Precedenza dei pattern
Quando per un determinato sito si applicano più regole di impostazione dei contenuti, ha la precedenza la regola con il pattern più specifico.
Ad esempio, i seguenti pattern sono ordinati in base alla precedenza:
https://www.example.com/*
https://*.example.com/*
(corrisponde a example.com e a tutti i sottodomini)<all_urls>
(corrisponde a ogni URL)
Tre tipi di caratteri jolly influiscono sulla specificità di un pattern:
- Caratteri jolly nella porta (ad es.
https://www.example.com:*/*
) - Caratteri jolly nello schema (ad es.
*://www.example.com:123/*
) - Caratteri jolly nel nome host (ad esempio
https://*.example.com:123/*
)
Se un pattern è più specifico di un altro in una parte, ma meno specifico in un'altra, le diverse parti vengono controllate nel seguente ordine: nome host, schema, porta. Ad esempio, i seguenti pattern sono ordinati in base alla precedenza:
https://www.example.com:*/*
Specifica il nome host e lo schema.*:/www.example.com:123/*
Non così elevato, perché, anche se specifica il nome host, non specifica lo schema.https://*.example.com:123/*
È inferiore perché, anche se specifica la porta e lo schema, contiene un'espressione jolly nel nome host.
Motivi principali e secondari
L'URL preso in considerazione per decidere quale impostazione dei contenuti applicare dipende dal tipo di contenuti.
Ad esempio, per contentSettings.notifications
le impostazioni si basano sull'URL mostrato nell'omnibox. Questo URL è chiamato URL "principale".
Per alcuni tipi di contenuti è possibile prendere in considerazione URL aggiuntivi. Ad esempio, la possibilità per un sito di impostare un contentSettings.cookies
viene decisa in base all'URL della richiesta HTTP (in questo caso l'URL principale) e all'URL mostrato nell'omnibox (chiamato URL "secondario").
Se più regole hanno pattern principali e secondari, ha la precedenza la regola con il pattern principale più specifico. Se più regole hanno lo stesso pattern principale, ha la precedenza la regola con il pattern secondario più specifico. Ad esempio, il seguente elenco di coppie di pattern principali/secondari è ordinato in base alla precedenza:
Precedenza | Pattern principale | Motivo secondario |
---|---|---|
1 | https://www.moose.com/* , | https://www.wombat.com/* |
2 | https://www.moose.com/* , | <all_urls> |
3 | <all_urls> , | https://www.wombat.com/* |
4 | <all_urls> , | <all_urls> |
I pattern secondari non sono supportati per l'impostazione dei contenuti delle immagini.
Identificatori delle risorse
Gli identificatori delle risorse consentono di specificare le impostazioni dei contenuti per sottotipi specifici di un tipo di contenuto.
Attualmente, l'unico tipo di contenuti che supporta gli identificatori delle risorse è contentSettings.plugins
,
dove un identificatore della risorsa identifica un plug-in specifico. Quando vengono applicate le impostazioni dei contenuti, vengono prima controllate le impostazioni del plug-in specifico. Se non vengono trovate impostazioni per il plug-in specifico, vengono controllate le impostazioni generali dei contenuti per i plug-in.
Ad esempio, se una regola di impostazione dei contenuti ha l'identificatore della risorsa adobe-flash-player
e il pattern <all_urls>
, ha la precedenza su una regola senza identificatore della risorsa e sul pattern https://www.example.com/*
, anche se questo pattern è più specifico.
Puoi ottenere un elenco di identificatori delle risorse per un tipo di contenuti chiamando il metodo
contentSettings.ContentSetting.getResourceIdentifiers()
. L'elenco restituito può cambiare con
l'insieme di plug-in installati sulla macchina dell'utente, ma Chrome tenta di mantenere stabili gli identificatori
tra gli aggiornamenti dei plug-in.
Esempi
Per provare questa API, installa l'esempio dell'API contentSettings dal repository chrome-extension-samples.
Tipi
AutoVerifyContentSetting
Enum
"allow"
"block"
CameraContentSetting
Enum
"allow"
"block"
"ask"
ClipboardContentSetting
Enum
"allow"
"block"
"ask"
ContentSetting
Proprietà
-
cancella
nullo
PromessaCancella tutte le regole di impostazione dei contenuti impostate da questa estensione.
La funzione
clear
ha il seguente aspetto:(details: object, callback?: function) => {...}
-
dettagli
oggetto
-
ambito
Ambito facoltativo
Dove cancellare l'impostazione (valore predefinito: regolare).
-
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
-
returns
Promise<void>
Chrome 96 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
-
-
get
nullo
PromessaRecupera l'impostazione dei contenuti corrente per una determinata coppia di URL.
La funzione
get
ha il seguente aspetto:(details: object, callback?: function) => {...}
-
dettagli
oggetto
-
in incognito
booleano facoltativo
Indica se controllare le impostazioni dei contenuti per una sessione in incognito. (valore predefinito false)
-
primaryUrl
stringa
L'URL principale per il quale deve essere recuperata l'impostazione dei contenuti. Tieni presente che il significato di un URL principale dipende dal tipo di contenuti.
-
resourceIdentifier
ResourceIdentifier facoltativo
Un identificatore più specifico del tipo di contenuti per i quali devono essere recuperate le impostazioni.
-
secondaryUrl
stringa facoltativa
L'URL secondario per cui deve essere recuperata l'impostazione dei contenuti. Il valore predefinito è l'URL principale. Tieni presente che il significato di un URL secondario dipende dal tipo di contenuti e che non tutti i tipi di contenuti utilizzano URL secondari.
-
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(details: object) => void
-
dettagli
oggetto
-
impostazione
T
L'impostazione dei contenuti. Consulta la descrizione dei singoli oggetti ContentSetting per i valori possibili.
-
-
-
returns
Promise<object>
Chrome 96 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
-
-
getResourceIdentifiers
nullo
PromessaLa funzione
getResourceIdentifiers
ha il seguente aspetto:(callback?: function) => {...}
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:(resourceIdentifiers?: ResourceIdentifier[]) => void
-
resourceIdentifiers
ResourceIdentifier[] facoltativo
Un elenco di identificatori delle risorse per questo tipo di contenuti o
undefined
se questo tipo di contenuti non utilizza identificatori delle risorse.
-
-
returns
Promise<ResourceIdentifier[]>
Chrome 96 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
-
-
imposta
nullo
PromessaApplica una nuova regola di impostazione dei contenuti.
La funzione
set
ha il seguente aspetto:(details: object, callback?: function) => {...}
-
dettagli
oggetto
-
primaryPattern
stringa
Il pattern per l'URL principale. Per informazioni dettagliate sul formato di un pattern, vedi Pattern di impostazioni dei contenuti.
-
resourceIdentifier
ResourceIdentifier facoltativo
L'identificatore della risorsa per il tipo di contenuto.
-
ambito
Ambito facoltativo
Dove impostare l'impostazione (valore predefinito: normale).
-
secondaryPattern
stringa facoltativa
Il pattern per l'URL secondario. Per impostazione predefinita corrisponde a tutti gli URL. Per informazioni dettagliate sul formato di un pattern, consulta Pattern di impostazioni dei contenuti.
-
impostazione
qualsiasi
L'impostazione applicata da questa regola. Consulta la descrizione dei singoli oggetti ContentSetting per i valori possibili.
-
-
callback
function facoltativa
Il parametro
callback
ha il seguente aspetto:() => void
-
returns
Promise<void>
Chrome 96 e versioni successiveLe promesse sono supportate in Manifest V3 e versioni successive, ma i callback vengono forniti per la compatibilità con le versioni precedenti. Non puoi utilizzarli entrambi nella stessa chiamata di funzione. La promessa viene risolta con lo stesso tipo passato al callback.
-
CookiesContentSetting
Enum
"allow"
"block"
"session_only"
FullscreenContentSetting
Valore
"allow"
ImagesContentSetting
Enum
"allow"
"block"
JavascriptContentSetting
Enum
"allow"
"block"
LocationContentSetting
Enum
"allow"
"block"
"ask"
MicrophoneContentSetting
Enum
"allow"
"block"
"ask"
MouselockContentSetting
Valore
"allow"
MultipleAutomaticDownloadsContentSetting
Enum
"allow"
"block"
"ask"
NotificationsContentSetting
Enum
"allow"
"block"
"ask"
PluginsContentSetting
Valore
"block"
PopupsContentSetting
Enum
"allow"
"block"
PpapiBrokerContentSetting
Valore
"block"
ResourceIdentifier
L'unico tipo di contenuto che utilizza gli identificatori delle risorse è contentSettings.plugins
. Per ulteriori informazioni, consulta Identificatori delle risorse.
Proprietà
-
descrizione
stringa facoltativa
Una descrizione leggibile della risorsa.
-
id
stringa
L'identificatore della risorsa per il tipo di contenuti specificato.
Scope
L'ambito di ContentSetting. Uno dei seguenti valori:
regular
: impostazione per il profilo normale (che viene ereditata dal profilo in incognito se non è sostituita altrove),
incognito\_session\_only
: impostazione per il profilo in incognito che può essere impostata solo durante una sessione in incognito e viene eliminata al termine della sessione (sostituisce le impostazioni normali).
Enum
"regular"
"incognito_session_only"
Proprietà
automaticDownloads
Se consentire ai siti di scaricare automaticamente più file. Uno dei seguenti:
allow
: Consenti ai siti di scaricare automaticamente più file,
block
: Non consentire ai siti di scaricare automaticamente più file,
ask
: Chiedi quando un sito vuole scaricare automaticamente i file dopo il primo.
Il valore predefinito è ask
.
L'URL principale è l'URL del frame di primo livello. L'URL secondario non viene utilizzato.
autoVerify
Se consentire ai siti di utilizzare l'API Private State Tokens. Uno dei seguenti valori:
allow
: Consenti ai siti di utilizzare l'API Private State Tokens,
block
: Blocca l'utilizzo dell'API Private State Tokens da parte dei siti.
Il valore predefinito è allow
.
L'URL principale è l'URL del frame di primo livello. L'URL secondario non viene utilizzato. NOTA: quando chiami set()
, il pattern principale deve essere .
camera
Indica se consentire ai siti di accedere alla fotocamera. Uno dei seguenti:
allow
: Consenti ai siti di accedere alla fotocamera,
block
: Non consentire ai siti di accedere alla fotocamera,
ask
: Chiedi quando un sito vuole accedere alla fotocamera.
Il valore predefinito è ask
.
L'URL principale è l'URL del documento che ha richiesto l'accesso alla videocamera. L'URL secondario non viene utilizzato.
NOTA: l'impostazione "allow" non è valida se entrambi i pattern sono "'".
clipboard
Indica se consentire ai siti di accedere agli appunti tramite le funzionalità avanzate dell'API Async Clipboard. Le funzionalità "avanzate" includono qualsiasi cosa oltre alla scrittura di formati integrati dopo un gesto dell'utente, ad esempio la possibilità di leggere, scrivere formati personalizzati e scrivere senza un gesto dell'utente. Uno dei seguenti:
allow
: Consenti ai siti di utilizzare funzionalità avanzate della clipboard,
block
: Non consentire ai siti di utilizzare funzionalità avanzate della clipboard,
ask
: Chiedi quando un sito vuole utilizzare funzionalità avanzate della clipboard.
Il valore predefinito è ask
.
L'URL principale è l'URL del documento che ha richiesto l'accesso agli appunti. L'URL secondario non viene utilizzato.
cookies
Indica se consentire o meno l'impostazione di cookie e altri dati locali da parte dei siti web. Uno dei seguenti:
allow
: Accetta cookie,
block
: Blocca cookie,
session\_only
: Accetta cookie solo per la sessione corrente.
Il valore predefinito è allow
.
L'URL principale è l'URL che rappresenta l'origine del cookie. L'URL secondario è l'URL del frame di primo livello.
fullscreen
Ritiro. Non ha più alcun effetto. L'autorizzazione per lo schermo intero viene ora concessa automaticamente per tutti i siti. Il valore è sempre allow
.
images
Indica se mostrare le immagini. Uno dei seguenti valori:
allow
: Mostra immagini,
block
: Non mostrare immagini.
Il valore predefinito è allow
.
L'URL principale è l'URL del frame di primo livello. L'URL secondario è l'URL dell'immagine.
javascript
Se eseguire o meno JavaScript. Uno dei seguenti:
allow
: Esegui JavaScript,
block
: Non eseguire JavaScript.
Il valore predefinito è allow
.
L'URL principale è l'URL del frame di primo livello. L'URL secondario non viene utilizzato.
location
Indica se consentire la geolocalizzazione. Uno dei seguenti:
allow
: Consenti ai siti di monitorare la tua posizione fisica,
block
: Non consentire ai siti di monitorare la tua posizione fisica,
ask
: Chiedi prima di consentire ai siti di monitorare la tua posizione fisica.
Il valore predefinito è ask
.
L'URL principale è l'URL del documento che ha richiesto i dati sulla posizione. L'URL secondario è l'URL del frame di primo livello (che può essere diverso o meno dall'URL richiedente).
microphone
Indica se consentire ai siti di accedere al microfono. Uno dei seguenti:
allow
: Consenti ai siti di accedere al microfono,
block
: Non consentire ai siti di accedere al microfono,
ask
: Chiedi quando un sito vuole accedere al microfono.
Il valore predefinito è ask
.
L'URL principale è l'URL del documento che ha richiesto l'accesso al microfono. L'URL secondario non viene utilizzato.
NOTA: l'impostazione "allow" non è valida se entrambi i pattern sono "'".
mouselock
Ritiro. Non ha più alcun effetto. L'autorizzazione di blocco del mouse viene ora concessa automaticamente per tutti i siti. Il valore è sempre allow
.
notifications
Indica se consentire ai siti di mostrare notifiche desktop. Uno dei seguenti:
allow
: Consenti ai siti di mostrare notifiche desktop,
block
: Non consentire ai siti di mostrare notifiche desktop,
ask
: Chiedi ogni volta che un sito vuole mostrare notifiche desktop.
Il valore predefinito è ask
.
L'URL principale è l'URL del documento che vuole mostrare la notifica. L'URL secondario non viene utilizzato.
plugins
Ritiro. Poiché il supporto di Flash è stato rimosso in Chrome 88, questa autorizzazione non ha più alcun effetto. Il valore è sempre block
. Le chiamate a set()
e clear()
verranno ignorate.
popups
Indica se consentire ai siti di mostrare popup. Uno dei seguenti:
allow
: Consenti ai siti di mostrare popup,
block
: Non consentire ai siti di mostrare popup.
Il valore predefinito è block
.
L'URL principale è l'URL del frame di primo livello. L'URL secondario non viene utilizzato.
unsandboxedPlugins
Ritiro. In precedenza, controllava se consentire ai siti di eseguire plug-in senza sandbox, ma con la rimozione del processo di broker Flash in Chrome 88, questa autorizzazione non ha più alcun effetto. Il valore è sempre block
. Le chiamate a set()
e clear()
verranno ignorate.