Autorisations pour les modèles personnalisés

Ce document décrit les autorisations pour les modèles Web personnalisés.


Chaque autorisation est:

  • Vérifié par les API qui les nécessitent.
  • Détection automatique dans le code JavaScript de 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).
  • Modifiables dans l'éditeur de modèles personnalisés, pour rendre l'autorisation plus spécifique.
  • interrogeable en JavaScript en bac à sable via l'API queryPermission.

access_globals

Display name (Nom à afficher) : permet d'accéder aux variables globales

Description:autorise l'accès à une variable globale (susceptible d'inclure des API sensibles).

Configuration:liste des clés accessibles. 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 le champ d'application global du navigateur ni un mot clé JavaScript. Dispose de cases à cocher de lecture, d'écriture et d'exécution qui régissent l'accès.

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>)

Remarque:Détermine si un modèle personnalisé peut lire et/ou écrire sur 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

Display name (Nom à afficher) : accède à l'espace de stockage local

Description:autorise l'accès aux clés spécifiées dans l'espace de stockage local.

Configuration:liste des clés de stockage local accessibles. Il s'agit d'un simple tableau de clés, sans caractère générique. Dispose de cases à cocher de lecture et d'écriture qui régissent l'accès.

Requis par: localStorage

Signature de 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

Display name (Nom à afficher) : accède au stockage de modèles

Description:autorise l'accès à un espace de stockage temporaire pour les modèles qui peuvent être conservés pendant toute la durée de vie de la page.

Configuration:aucune

Requis 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 des cookies

Description:lit les valeurs des cookies portant le nom spécifié.

Configuration:liste des noms des cookies autorisés pour la lecture.

Requis par: getCookieValues

Signature de la requête:queryPermission('get_cookies', <name>)

Remarque: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:autorise l'accès en lecture aux parties restreintes de l'URL de provenance.

Configuration:les valeurs booléennes suivantes déterminent quelle partie de l'URL de provenance peut être lue. Une partie donnée de l'URL de provenance ne peut être lue que si la partie correspondante est true. L'appelant peut appeler getReferrerUrl sans composant spécifié pour obtenir l'URL de provenance complète si toutes ces valeurs booléennes sont définies sur true. Si aucune valeur n'est définie, la valeur par défaut est all. Si une valeur est définie, celle-ci doit être un tableau de composants où un composant correspond à l'un des éléments 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 de clés de requête à partir desquelles il peut lire. Il s'agit d'un simple tableau de clés, sans caractère générique.

Requis par: 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:affiche une partie ou la totalité de l'URL de la page actuelle.

Configuration:les valeurs booléennes suivantes régissent la partie de l'URL pouvant ê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 composant spécifié pour obtenir l'URL complète si et seulement si toutes ces valeurs booléennes sont définies sur true. Si aucune valeur n'est définie, la valeur par défaut est all. Si une valeur est définie, celle-ci doit être un tableau de composants dont un composant correspond à l'un des éléments 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 de clés de requête à partir desquelles il peut lire. Il s'agit d'un simple tableau de clés, sans caractère générique.

Requis par: getUrl

Signature de la requête:queryPermission('get_url', <optional url component>, <optional query key>)

S'il est fourni, le composant d'URL doit être 'protocol', 'host', 'port', 'path', 'query', 'extension' ou 'fragment'. En cas d'omission, la requête d'autorisation est une demande d'accès à l'URL complète.

Si elle est fournie, la clé de requête doit être l'argument de chaîne de requête que le code de modèle souhaite lire.

Remarque:Détermine si un modèle personnalisé peut lire à partir de l'emplacement actuel. Permet de se limiter à 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:injecte des iFrames masqués

Description:injecte un iFrame invisible avec l'URL donnée.

Configuration:liste des formats d'URL

Requis par: injectHiddenIframe

Signature de la requête:queryPermission('inject_hidden_iframe', <url>)

Remarque:Détermine si un modèle personnalisé peut injecter un iFrame invisible, et à partir de quelle origine il peut le faire.

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:permet d'injecter des scripts

Description:injecte un script dans la page.

Configuration:liste des formats d'URL

Requis par: injectScript

Signature de la requête:queryPermission('inject_script', <url>)

Remarque:Détermine si un modèle personnalisé peut injecter du code JavaScript, et à partir de quelle origine il peut le faire.

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:permet de se connecter à la console

Description:permet d'accéder à la Play Console et au mode Aperçu de Google Tag Manager.

Configuration:option permettant d'activer la journalisation en production. La valeur par défaut n'active que la journalisation en mode débogage/preview. Si l'autorisation est refusée, logToConsole ne génère pas d'erreur, mais supprime le message de journal.

Requis par: logToConsole

Signature de la requête:queryPermission('logging')

Remarque:Détermine si un modèle personnalisé peut être consigné 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:lit la couche de données

Description:lit les données de la couche de données.

Configuration:ensemble d'expressions de correspondance, où une correspondance de clé peut être une série initiale de références en pointillés, suivies d'un caractère générique. Les expressions de correspondance de clés régissent les propriétés qui peuvent être lues à partir de la couche de données.

Requis par: copyFromDataLayer

Signature de la requête:queryPermission('read_data_layer', <data layer key to read from>)

Remarque:Détermine si un modèle personnalisé peut lire les données 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

Requis 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

Requis par: getContainerVersion

Signature de la requête:queryPermission('read_container_data')

Remarque:Détermine si un modèle personnalisé peut lire des données concernant 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 d'événement

Description:lit les métadonnées d'événement dans les rappels d'événements

Configuration:aucune

Requis par: addEventCallback

Signature de la requête:queryPermission('read_event_metadata')

Remarque:Détermine si un modèle personnalisé peut lire les métadonnées d'événements 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

Requis par: readTitle

Signature de la requête:queryPermission('read_title')

Remarques:Détermine si un modèle personnalisé peut lire l'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.

Requis par: sendPixel

Signature de la requête:queryPermission('send_pixel', <url>)

Remarque:Ce paramètre 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:table des noms de cookies autorisés, chacun avec des restrictions facultatives sur le nom, le domaine, le chemin, l'attribut secure et la date d'expiration.

Requis par: setCookie

Signature de la requête:queryPermission('set_cookies', <name>, <options>)

Remarque: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 la date d'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 la couche de données

Description:écrit des données dans la couche de données.

Configuration:ensemble d'expressions de correspondance, où une correspondance de clé peut être une série initiale de références en pointillés, suivies d'un caractère générique. Les expressions de correspondance de clés régissent les propriétés autorisées à écrire dans la couche de données.

Requis par: gtagSet

Signature de la requête:queryPermission('write_data_layer', <data layer key to write from>)

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