Ce document décrit les autorisations des modèles personnalisés Web.
Chaque autorisation est:
- Vérifié par les API qui en ont besoin.
- Détecté automatiquement dans le code 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 vérifier que les autorisations appropriées sont appliquées).
- Modifiable dans l'éditeur de modèles personnalisés pour rendre l'autorisation plus spécifique.
- Peut être interrogé en JavaScript de bac à sable via l'API
queryPermission
.
access_globals
Nom à afficher:permet d'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 des points. Par exemple: foo.bar
Le premier jeton de chaque chemin d'accès ne doit pas être une clé prédéfinie dans la portée globale du navigateur ni un mot clé JavaScript. Possède des cases à cocher de lecture, d'écriture et d'exécution qui régissent l'accès.
Obligatoire pour: setInWindow
, copyFromWindow
, callInWindow
,
createQueue
, createArgumentsQueue
Signature de la requête:queryPermission('access_globals', 'read', <key to read
from>)
ou queryPermission('access_globals', 'write', <key to write to>)
ou 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:permet d'accéder au stockage local
Description:permet d'accéder 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 tableau simple de clés, sans caractères génériques. Comprend des cases à cocher de lecture et d'écriture qui régissent l'accès.
Obligatoire par: 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ès au stockage du modèle
Description:permet d'accéder au stockage temporaire pour les modèles pouvant persister pendant toute la durée de vie de la page.
Configuration:aucune
Obligatoire par: 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 ou les valeurs du cookie.
Description:lit les valeurs des cookies portant le nom spécifié.
Configuration:liste des noms des cookies autorisés à être lus.
Obligatoire par: 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:lit l'URL de provenance.
Description:permet d'accéder en lecture à des parties restreintes du site référent.
Configuration:les valeurs booléennes suivantes déterminent quelle partie du référent peut être lue. Une partie donnée du référent 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 complète du site référent 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 éléments suivants: protocol
, host
, port
, path
, query
ou extension
.
queryKeys
:si "Requête" est sélectionné, l'auteur du modèle peut limiter davantage l'ensemble de clés de requête à partir duquel il peut lire. Il s'agit d'un tableau simple 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:lit l'URL.
Description:renvoie une partie ou l'ensemble de l'URL de la page active.
Configuration:les valeurs booléennes suivantes déterminent quelle partie de l'URL peut être lue. Une partie donnée de l'URL ne peut être lue que si la partie correspondante est vraie. 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 éléments suivants: protocol
, host
, port
, path
, query
, extension
ou fragment
.
queryKeys
:si "Requête" est sélectionné, l'auteur du modèle peut limiter davantage l'ensemble de clés de requête à partir duquel il peut lire. Il s'agit d'un tableau simple de clés, sans caractères génériques.
Obligatoire par: getUrl
Signature de la requête: queryPermission('get_url', <optional url component>,
<optional query key>)
Le composant Url, le cas échéant, doit être '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.
Le cas échéant, la clé de requête doit être l'argument de la chaîne de requête que le code du modèle souhaite lire.
Remarques:Détermine si un modèle personnalisé peut lire à partir de l'emplacement actuel. Permet de limiter la zone géographique à une partie spécifique.
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:Injecte des iFrames masqués
Description:injecte un iFrame invisible avec une URL donnée.
Configuration:liste des formats d'URL
Obligatoire par: 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 dans la page.
Configuration:liste des formats d'URL
Obligatoire par: 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 : "Se connecter à 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 que pour le débogage/l'aperçu. Si l'autorisation est refusée, logToConsole
ne génère pas d'erreur, mais supprime le message de journal.
Obligatoire par: logToConsole
Signature de la requête: queryPermission('logging')
Remarques:Détermine si un modèle personnalisé peut se connecter à la console du développeur.
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 précédées d'un point, avec un caractère générique à la fin. Les expressions de correspondance des clés déterminent les propriétés pouvant être lues à partir de la couche de données.
Obligatoire par: copyFromDataLayer
Signature de la requête: queryPermission('read_data_layer', <data layer key to read
from>)
Remarques:Permet de contrôler si un modèle personnalisé peut lire à 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_character_set
Nom à afficher:lit le jeu de caractères du document.
Description:lit document.characterSet
.
Configuration:aucune
Obligatoire par: 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:lit les données du conteneur
Description:lit les données sur le conteneur.
Configuration:aucune
Obligatoire par: getContainerVersion
Signature de la requête: queryPermission('read_container_data')
Remarques:Détermine si un modèle personnalisé peut lire les données sur le 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 de l'événement.
Description:lit les métadonnées d'événement dans les rappels d'événement
Configuration:aucune
Obligatoire par: 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:lit document.title
.
Configuration:aucune
Obligatoire par: 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:envoie des pixels
Description:envoie une requête GET à une URL spécifiée. La réponse n'est pas traitée.
Configuration:liste des formats d'URL autorisés.
Obligatoire par: 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 par: 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, 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:couche de données d'écriture
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 précédées d'un point, avec un caractère générique à la fin. Les expressions de correspondance de clés déterminent les propriétés pouvant écrire dans la couche de données.
Obligatoire par: 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'});
}