Autorisations pour les modèles personnalisés

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'});
}