Ce document décrit les autorisations pour les modèles Web personnalisés.
Chaque autorisation :
- Vérifié par les API qui en ont besoin.
- Détecté automatiquement dans le JavaScript en bac à sable, en fonction des API utilisées. Cela se produit lorsque des modifications sont apportées dans l'éditeur de modèles personnalisés (pour une boucle de rétroaction rapide) et lorsque le code est compilé (pour valider que les autorisations appropriées sont appliquées).
- Modifiable dans l'éditeur de modèles personnalisés pour rendre l'autorisation plus spécifique.
- Interrogeable dans le bac à sable JavaScript via l'API
queryPermission
.
access_globals
Nom à afficher : accéder aux variables globales
Description : permet d'accéder à une variable globale (susceptible d'inclure des API sensibles).
Configuration : liste des clés auxquelles vous pouvez accéder. Chaque clé est un chemin d'accès séparé par un point. Par exemple : foo.bar
. Le premier jeton de chaque chemin ne doit pas être une clé prédéfinie dans la portée globale du navigateur ni un mot clé JavaScript. Il comporte des cases à cocher pour l'accès en lecture, en écriture et à l'exécution.
Requis par : setInWindow
, copyFromWindow
, callInWindow
,
createQueue
, createArgumentsQueue
Signature de la requête : queryPermission('access_globals', 'read', <key to read
from>)
, queryPermission('access_globals', 'write', <key to write to>)
, queryPermission('access_globals', 'readwrite', <key to read and write>)
ou queryPermission('access_globals', 'execute', <key of function to execute>)
Remarques : Détermine si un modèle personnalisé peut lire et/ou écrire des valeurs globales.
Exemple de code
const queryPermission = require('queryPermission');
const createQueue = require('createQueue');
if (queryPermission('access_globals', 'readwrite', 'dataLayer')) {
const dataLayerPush = createQueue('dataLayer');
}
access_local_storage
Nom à afficher : accède au stockage local
Description : autorise l'accès aux clés spécifiées dans le stockage local.
Configuration : liste des clés de stockage local auxquelles vous pouvez accéder. Il s'agit d'un simple tableau de clés, sans caractères génériques. Il comporte des cases à cocher pour l'accès en lecture et en écriture.
Obligatoire pour : localStorage
Signature de la requête : queryPermission('access_local_storage', 'read', <key to
read from>)
, queryPermission('access_local_storage', 'write', <key to write
to>)
ou queryPermission('access_local_storage', 'readwrite', <key to read and
write>)
Exemple de code
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
Nom à afficher : Accéder au stockage du modèle
Description : permet d'accéder au stockage temporaire pour les modèles qui peuvent persister pendant toute la durée de vie de la page.
Configuration : aucune
Obligatoire pour : templateStorage
Signature de la requête : queryPermission('access_template_storage')
Exemple de code
const queryPermission = require('queryPermission');
const templateStorage = require('templateStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateStorage.getItem(key);
}
get_cookies
Nom à afficher : lit la valeur des cookies.
Description : lit les valeurs des cookies portant le nom spécifié.
Configuration : liste des noms des cookies autorisés à être lus.
Obligatoire pour : getCookieValues
Signature de la requête : queryPermission('get_cookies', <name>)
Remarques : détermine si un cookie peut être lu, en fonction de son nom.
Exemple de code
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
get_referrer
Nom à afficher : lire l'URL de provenance
Description : autorise l'accès en lecture à des parties spécifiques du referrer.
Configuration : les valeurs booléennes suivantes déterminent quelle partie du referrer peut être lue. Une partie donnée du referrer ne peut être lue que si la partie correspondante est true
. L'appelant peut appeler getReferrerUrl
sans spécifier de composant pour obtenir l'URL de provenance complète si tous ces booléens sont définis sur true
. Si aucune valeur n'est définie, la valeur par défaut est all
. Si une valeur est définie, elle doit être un tableau de composants, où un composant est l'un des suivants : protocol
, host
, port
, path
, query
ou extension
.
queryKeys
: si la requête est sélectionnée, l'auteur du modèle peut limiter davantage l'ensemble des clés de requête à partir desquelles il peut lire. Il s'agit d'un simple tableau de clés, sans caractères génériques.
Obligatoire pour : getReferrerUrl
, getReferrerQueryParameters
Signature de la requête : queryPermission('get_referrer', <url_component>)
Exemple de code
const queryPermission = require('queryPermission');
const getReferrerUrl = require('getReferrerUrl');
let referrer;
if (queryPermission('get_referrer', 'query')) {
referrer = getReferrerUrl('queryParams');
}
get_url
Nom à afficher : URL de lecture
Description : renvoie l'URL de la page active en totalité ou en partie.
Configuration : les valeurs booléennes suivantes déterminent la partie de l'URL qui peut être lue. Une partie donnée de l'URL ne peut être lue que si la partie correspondante est définie sur "true". L'appelant peut appeler getUrl
sans spécifier de composant pour obtenir l'URL complète si et seulement si tous ces booléens sont définis sur true
. Si aucune valeur n'est définie, la valeur par défaut est all
. Si une valeur est définie, elle doit être un tableau de composants, où un composant est l'un des suivants : protocol
, host
, port
, path
, query
, extension
ou fragment
.
queryKeys
: si la requête est sélectionnée, l'auteur du modèle peut limiter davantage l'ensemble des clés de requête à partir desquelles il peut lire. Il s'agit d'un simple tableau de clés, sans caractères génériques.
Obligatoire pour : getUrl
Signature de la requête : queryPermission('get_url', <optional url component>,
<optional query key>)
Si le composant URL est fourni, il doit être l'un des suivants : 'protocol'
, 'host'
, 'port'
, 'path'
, 'query'
, 'extension'
ou 'fragment'
. Si elle est omise, la requête d'autorisation est une demande d'accès à l'intégralité de l'URL.
Si elle est fournie, la clé de requête doit être l'argument de chaîne de requête que le code du modèle souhaite lire.
Remarques : Détermine si un modèle personnalisé peut lire la position actuelle. Permet de limiter la recherche à une partie spécifique de l'établissement.
Exemple de code
const queryPermission = require('queryPermission');
const getUrl = require('getUrl');
if (queryPermission('get_url', 'query', 'gclid')) {
const gclid = getUrl('query', false, null, 'gclid');
}
inject_hidden_iframe
Nom à afficher : injecter des iFrames masqués
Description : injecte un iFrame invisible avec une URL donnée.
Configuration : liste de formats d'URL
Obligatoire pour : injectHiddenIframe
Signature de la requête : queryPermission('inject_hidden_iframe', <url>)
Remarques : Détermine si un modèle personnalisé peut injecter un iFrame invisible et à partir de quelle origine.
Exemple de code
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
Nom à afficher : injecte des scripts
Description : injecte un script sur la page.
Configuration : liste de formats d'URL
Obligatoire pour : injectScript
Signature de la requête : queryPermission('inject_script', <url>)
Remarques : Détermine si un modèle personnalisé peut injecter du code JavaScript et à partir de quelle origine.
Exemple de code
const queryPermission = require('queryPermission');
const injectScript = require('injectScript');
const url = 'https://www.example.com?api.js';
if (queryPermission('inject_script', url)) {
injectScript(url);
}
journalisation
Nom à afficher : journaux dans la console
Description : consigne dans la console pour les développeurs et dans le mode Aperçu de GTM.
Configuration : option permettant d'activer la journalisation en production. Par défaut, la journalisation n'est activée qu'en mode débogage/aperçu. Si l'autorisation est refusée, logToConsole
ne générera pas d'erreur, mais supprimera le message de journal.
Obligatoire pour : logToConsole
Signature de la requête : queryPermission('logging')
Remarques : Détermine si un modèle personnalisé peut consigner des informations dans la console pour les développeurs.
Exemple de code
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
Nom à afficher : Lire la couche de données
Description : lit les données à partir de la couche de données.
Configuration : ensemble d'expressions de correspondance de clé, où une correspondance de clé peut être une série de références avec des points, avec un caractère générique à la fin. Les expressions de correspondance de clé déterminent les propriétés qui peuvent être lues à partir de la couche de données.
Obligatoire pour : copyFromDataLayer
Signature de la requête : queryPermission('read_data_layer', <data layer key to read
from>)
Remarques : Détermine si un modèle personnalisé peut lire des données à partir de la couche de données.
Exemple de code
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
Nom à afficher : lit l'espace de stockage Analytics
Description : permet aux modèles de lire les données analytiques stockées, telles que les ID client.
Configuration : aucune
Obligatoire pour : readAnalyticsStorage
Signature de la requête : queryPermission('read_analytics_storage')
Remarques : Détermine si un modèle personnalisé peut lire les données du stockage Analytics.
Exemple de code
const queryPermission = require('queryPermission');
const readAnalyticsStorage = require('readAnalyticsStorage');
if (queryPermission('read_analytics_storage')) {
const value = readAnalyticsStorage();
}
read_character_set
Nom à afficher : lit le jeu de caractères du document.
Description : document.characterSet
.
Configuration : aucune
Obligatoire pour : readCharacterSet
Signature de la requête : queryPermission('read_character_set')
Remarques : Détermine si un modèle personnalisé peut lire document.characterSet
.
Exemple de code
const queryPermission = require('queryPermission');
const readCharacterSet = require('readCharacterSet');
if (queryPermission('read_character_set')) {
const characterSet = readCharacterSet();
}
read_container_data
Nom à afficher : lire les données du conteneur
Description : lit les données sur le conteneur.
Configuration : aucune
Obligatoire pour : getContainerVersion
Signature de la requête : queryPermission('read_container_data')
Remarques : Détermine si un modèle personnalisé peut lire les données du conteneur.
Exemple de code
const queryPermission = require('queryPermission');
const getCookieValues = require('getContainerVersion');
let version;
if (queryPermission('read_container_data')) {
version = getContainerVersion();
}
read_event_metadata
Nom à afficher : lit les métadonnées d'événement
Description : lit les métadonnées d'événements dans les rappels d'événement
Configuration : aucune
Obligatoire pour : addEventCallback
Signature de la requête : queryPermission('read_event_metadata')
Remarques : Détermine si un modèle personnalisé peut lire les métadonnées d'événement dans les rappels.
Exemple de code
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
read_title
Nom à afficher : lit le titre du document
Description : document.title
.
Configuration : aucune
Obligatoire pour : readTitle
Signature de la requête : queryPermission('read_title')
Remarques : détermine si un modèle personnalisé peut lire le document.title
.
Exemple de code
const queryPermission = require('queryPermission');
const readTitle = require('readTitle');
if (queryPermission('read_title')) {
const title = readTitle();
}
send_pixel
Nom à afficher : envoi de pixels
Description : envoie une requête GET à l'URL indiquée. La réponse n'est pas traitée.
Configuration : liste des formats d'URL autorisés.
Obligatoire pour : sendPixel
Signature de la requête : queryPermission('send_pixel', <url>)
Remarques : Détermine si un modèle personnalisé peut envoyer une requête GET et à quelle origine il peut le faire.
Exemple de code
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
Nom à afficher : définit un cookie
Description : définit un cookie avec le nom et les paramètres spécifiés.
Configuration : tableau des noms de cookies autorisés, chacun avec des restrictions facultatives sur le nom, le domaine, le chemin, l'attribut secure
et l'expiration.
Obligatoire pour : setCookie
Signature de la requête : queryPermission('set_cookies', <name>, <options>)
Remarques : Détermine si un cookie peut être écrit, en fonction du nom, du domaine, du chemin d'accès, de l'attribut secure
et de l'expiration du cookie.
Exemple de code
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
Nom à afficher : Écrit sur la couche de données
Description : écrit des données dans la couche de données.
Configuration : ensemble d'expressions de correspondance de clé, où une correspondance de clé peut être une série de références avec des points, avec un caractère générique à la fin. Les expressions de correspondance de clé déterminent les propriétés qui peuvent écrire dans la couche de données.
Obligatoire pour : gtagSet
Signature de la requête : queryPermission('write_data_layer', <data layer key to
write from>)
Remarques : Détermine si un modèle personnalisé peut écrire dans la couche de données.
Exemple de code
const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
gtagSet({dlKey: 'baz'});
}