Autorizzazioni per i modelli personalizzati

Questo documento descrive le autorizzazioni per i modelli personalizzati web.


Ogni autorizzazione:

  • Controllato dalle API che le richiedono.
  • Rilevato automaticamente in JavaScript in modalità sandbox, in base alle API utilizzate. Ciò si verifica quando vengono apportate modifiche nell'editor di modelli personalizzati (per un ciclo di feedback rapido) e quando il codice viene compilato (per verificare che vengano applicate le autorizzazioni corrette).
  • Modificabile nell'editor di modelli personalizzati per rendere l'autorizzazione più specifica.
  • Eseguibile in JavaScript in sandbox tramite l'API queryPermission.

access_globals

Nome visualizzato:accede alle variabili globali

Descrizione: consente l'accesso a una variabile globale (che potenzialmente include API sensibili).

Configurazione:elenco delle chiavi a cui è possibile accedere. Ogni chiave è un percorso separato da un punto. Ad esempio: foo.bar Il primo token di ogni percorso non deve essere una chiave predefinita nell'ambito globale del browser né una parola chiave JavaScript. Dispone di caselle di controllo per lettura, scrittura ed esecuzione che regolano l'accesso.

Richiesto da: setInWindow, copyFromWindow, callInWindow, createQueue, createArgumentsQueue

Firma della query: queryPermission('access_globals', 'read', <key to read from>) o queryPermission('access_globals', 'write', <key to write to>) o queryPermission('access_globals', 'readwrite', <key to read and write>) o queryPermission('access_globals', 'execute', <key of function to execute>)

Note: controlla se un modello personalizzato può leggere e/o scrivere valori globali.

Codice di esempio

const queryPermission = require('queryPermission');
const createQueue = require('createQueue');
if (queryPermission('access_globals', 'readwrite', 'dataLayer')) {
  const dataLayerPush = createQueue('dataLayer');
}

access_local_storage

Nome visualizzato: accede allo spazio di archiviazione locale

Descrizione: consente l'accesso alle chiavi specificate nello spazio di archiviazione locale.

Configurazione:elenco delle chiavi dello spazio di archiviazione locale a cui è possibile accedere. Si tratta di un semplice array di chiavi, senza caratteri jolly. Dispone di caselle di controllo in lettura e scrittura che regolano l'accesso.

Richiesto da: localStorage

Firma della query: queryPermission('access_local_storage', 'read', <key to read from>) o queryPermission('access_local_storage', 'write', <key to write to>) o queryPermission('access_local_storage', 'readwrite', <key to read and write>)

Codice di esempio

const queryPermission = require('queryPermission');
const localStorage = require('localStorage');
const key = 'my_key';
if (queryPermission('access_local_storage', 'read', key)) {
  const value = localStorage.getItem(key);
}

access_template_storage

Nome visualizzato: accede allo spazio di archiviazione del modello

Descrizione: consente l'accesso allo spazio di archiviazione temporaneo per i modelli che possono essere mantenuti per la durata della pagina.

Configurazione: nessuna

Richiesto da: templateStorage

Firma della query: queryPermission('access_template_storage')

Codice di esempio

const queryPermission = require('queryPermission');
const templateStorage = require('templateStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
  const value = templateStorage.getItem(key);
}

get_cookies

Nome visualizzato:legge i valori dei cookie

Descrizione: legge i valori dei cookie con il nome specificato.

Configurazione:elenco dei nomi dei cookie consentiti per la lettura.

Richiesto da: getCookieValues

Firma della query: queryPermission('get_cookies', <name>)

Note:determina se un cookie può essere letto, a seconda del suo nome.

Codice di esempio

const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
  cookieValues = getCookieValues(cookieName);
}

get_referrer

Nome visualizzato:legge l'URL del referrer

Descrizione: consente l'accesso in lettura a porzioni ristrette del referrer.

Configurazione:i seguenti valori booleani determinano quale parte del referrer può essere letta. Una determinata parte del referrer può essere letta solo se la parte corrispondente è true. Il chiamante può chiamare getReferrerUrl senza specificare un componente per ottenere l'URL referrer completo se tutti questi valori booleani sono impostati su true. Se non è impostato alcun valore, il valore predefinito è all. Se viene impostato un valore, questo deve essere un array di componenti in cui un componente è uno dei seguenti: protocol, host, port, path, query o extension.

queryKeys: Se viene selezionata la query, l'autore del modello può limitare ulteriormente l'insieme di chiavi di query da cui può leggere. Si tratta di un semplice array di chiavi, senza caratteri jolly.

Richiesto da: getReferrerUrl, getReferrerQueryParameters

Firma della query: queryPermission('get_referrer', <url_component>)

Codice di esempio

const queryPermission = require('queryPermission');
const getReferrerUrl = require('getReferrerUrl');
let referrer;
if (queryPermission('get_referrer', 'query')) {
  referrer = getReferrerUrl('queryParams');
}

get_url

Nome visualizzato: legge l'URL

Descrizione: restituisce l'URL parziale o completo della pagina corrente.

Configurazione:i seguenti valori booleani determinano quale parte dell'URL può essere letta. Una determinata parte dell'URL può essere letta solo se la parte corrispondente è true. Il chiamante può chiamare getUrl senza specificare un componente per ottenere l'intero URL se e solo se tutti questi valori booleani sono impostati su true. Se non viene impostato alcun valore, il valore predefinito è all. Se viene impostato un valore, questo deve essere un array di componenti, dove un componente è uno dei seguenti: protocol, host, port, path, query, extension o fragment.

queryKeys: Se viene selezionata la query, l'autore del modello può limitare ulteriormente l'insieme di chiavi di query da cui può leggere. Si tratta di un semplice array di chiavi, senza caratteri jolly.

Richiesto da: getUrl

Firma della query: queryPermission('get_url', <optional url component>, <optional query key>)

Se fornito, il componente URL deve essere uno tra 'protocol', 'host', 'port', 'path', 'query', 'extension', 'fragment'. Se omessa, la query di autorizzazione è una richiesta di accesso all'intero URL.

Se fornita, la chiave di query deve essere l'argomento della stringa di query che il codice del modello vuole leggere.

Note: controlla se un modello personalizzato può leggere la posizione attuale. Consente di limitare a una parte specifica della posizione.

Codice di esempio

const queryPermission = require('queryPermission');
const getUrl = require('getUrl');
if (queryPermission('get_url', 'query', 'gclid')) {
  const gclid = getUrl('query', false, null, 'gclid');
}

inject_hidden_iframe

Nome visualizzato: inserisce iframe nascosti

Descrizione:inserisce un iframe invisibile con un determinato URL.

Configurazione:elenco di pattern URL

Richiesto da: injectHiddenIframe

Firma della query: queryPermission('inject_hidden_iframe', <url>)

Note: determina se un modello personalizzato può inserire un iframe invisibile e da quale origine può farlo.

Codice di esempio

const queryPermission = require('queryPermission');
const injectHiddenIframe = require('injectHiddenIframe');
const url = 'https://www.example.com/iframes';
if (queryPermission('inject_hidden_iframe', url)) {
  injectHiddenIframe(url);
}

inject_script

Nome visualizzato: inserisce script

Descrizione: inserisce uno script nella pagina.

Configurazione:elenco di pattern URL

Richiesto da: injectScript

Firma della query: queryPermission('inject_script', <url>)

Note: determina se un modello personalizzato può inserire JavaScript e da quale origine può farlo.

Codice di esempio

const queryPermission = require('queryPermission');
const injectScript = require('injectScript');
const url = 'https://www.example.com?api.js';
if (queryPermission('inject_script', url)) {
  injectScript(url);
}

logging

Nome visualizzato:registra messaggi nella console

Descrizione: registra messaggi nella console sviluppatori e attiva la modalità di anteprima di GTM.

Configurazione:opzione per abilitare la registrazione nella produzione. Per impostazione predefinita, viene abilitato il logging solo in modalità di debug/anteprima. Se l'autorizzazione viene negata, logToConsole non genererà un errore, ma sopprimerà il messaggio di log.

Richiesto da: logToConsole

Firma della query: queryPermission('logging')

Note: controlla se un modello personalizzato può accedere alla console per gli sviluppatori.

Codice di esempio

const queryPermission = require('queryPermission');
const logToConsole = require('logToConsole');
// Note that it's fine to call log, since the log call will be ignored if
// logging isn't permitted in the current environment.
logToConsole('diagnostic info');

read_data_layer

Nome visualizzato:legge il livello dati

Descrizione: legge i dati dal dataLayer.

Configurazione:insieme di espressioni di corrispondenza delle chiavi, in cui una corrispondenza delle chiavi può essere una serie iniziale di riferimenti puntati, con un carattere jolly finale. Le espressioni di corrispondenza chiave determinano quali proprietà possono essere lette dal livello dati.

Richiesto da: copyFromDataLayer

Firma della query: queryPermission('read_data_layer', <data layer key to read from>)

Note:controlla se un modello personalizzato può leggere dal data layer.

Codice di esempio

const queryPermission = require('queryPermission');
const copyFromDataLayer = require('copyFromDataLayer');
const dlKey = 'foo.bar';
if (queryPermission('read_data_layer', dlKey)) {
  const dlContents = copyFromDataLayer(dlKey);
}

read_analytics_storage

Nome visualizzato: legge lo spazio di archiviazione Analytics

Descrizione: consente ai modelli di leggere i dati di analisi memorizzati, ad esempio gli ID client.

Configurazione: nessuna

Richiesto da: readAnalyticsStorage

Firma della query: queryPermission('read_analytics_storage')

Note:determina se un modello personalizzato può leggere dallo spazio di archiviazione Analytics.

Codice di esempio

const queryPermission = require('queryPermission');
const readAnalyticsStorage = require('readAnalyticsStorage');
if (queryPermission('read_analytics_storage')) {
  const value = readAnalyticsStorage();
}

read_character_set

Nome visualizzato: legge il set di caratteri del documento

Descrizione: legge document.characterSet.

Configurazione: nessuna

Richiesto da: readCharacterSet

Firma della query: queryPermission('read_character_set')

Note:determina se un modello personalizzato può leggere document.characterSet.

Codice di esempio

const queryPermission = require('queryPermission');
const readCharacterSet = require('readCharacterSet');
if (queryPermission('read_character_set')) {
  const characterSet = readCharacterSet();
}

read_container_data

Nome visualizzato: legge i dati del contenitore

Descrizione:legge i dati relativi al contenitore.

Configurazione: nessuna

Richiesto da: getContainerVersion

Firma della query: queryPermission('read_container_data')

Note:controlla se un modello personalizzato può leggere i dati relativi al contenitore.

Codice di esempio

const queryPermission = require('queryPermission');
const getCookieValues = require('getContainerVersion');
let version;
if (queryPermission('read_container_data')) {
  version = getContainerVersion();
}

read_event_metadata

Nome visualizzato:legge i metadati degli eventi

Descrizione:legge i metadati degli eventi nei callback eventi

Configurazione: nessuna

Richiesto da: addEventCallback

Firma della query: queryPermission('read_event_metadata')

Note: controlla se un modello personalizzato può leggere i metadati degli eventi nei callback.

Codice di esempio

const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
  addEventCallback((containerId, eventMetadata) => {
    // Read event metadata.
  });
}

read_title

Nome visualizzato:legge il titolo del documento

Descrizione: legge document.title.

Configurazione: nessuna

Richiesto da: readTitle

Firma della query: queryPermission('read_title')

Note: determina se un modello personalizzato può leggere document.title.

Codice di esempio

const queryPermission = require('queryPermission');
const readTitle = require('readTitle');
if (queryPermission('read_title')) {
  const title = readTitle();
}

send_pixel

Nome visualizzato:invia pixel

Descrizione:invia una richiesta GET a un URL specificato. La risposta non è stata elaborata.

Configurazione:elenco di pattern URL consentiti.

Richiesto da: sendPixel

Firma della query: queryPermission('send_pixel', <url>)

Note: determina se un modello personalizzato può inviare una richiesta GET e a quale origine può farlo.

Codice di esempio

const queryPermission = require('queryPermission');
const sendPixel = require('sendPixel');
const url = 'https://www.example.com?foo=3';
if (queryPermission('send_pixel', url)) {
  sendPixel(url);
}

set_cookies

Nome visualizzato:imposta un cookie

Descrizione: imposta un cookie con il nome e i parametri specificati.

Configurazione:una tabella dei nomi dei cookie consentiti, ognuno con restrizioni facoltative su nome, dominio, percorso, attributo secure e scadenza.

Richiesto da: setCookie

Firma della query: queryPermission('set_cookies', <name>, <options>)

Note: determina se è possibile scrivere un cookie, a seconda del nome, del dominio, del percorso, dell'attributo secure e della scadenza del cookie.

Codice di esempio

const queryPermission = require('queryPermission');
const setCookie = require('setCookie');
const options = {
  'domain': 'www.example.com',
  'path': '/',
  'max-age': 60*60*24*365,
  'secure': true
};
if (queryPermission('set_cookies', 'info', options)) {
  setCookie('info', 'xyz', options);
}

write_data_layer

Nome visualizzato: scrive nel livello dati

Descrizione: scrive i dati nel dataLayer.

Configurazione:insieme di espressioni di corrispondenza delle chiavi, in cui una corrispondenza delle chiavi può essere una serie iniziale di riferimenti puntati, con un carattere jolly finale. Le espressioni di corrispondenza delle chiavi determinano le proprietà che possono scrivere nel livello dati.

Richiesto da: gtagSet

Firma della query: queryPermission('write_data_layer', <data layer key to write from>)

Note:controlla se un modello personalizzato può scrivere nel data layer.

Codice di esempio

const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
  gtagSet({dlKey: 'baz'});
}