En este documento, se describen los permisos de las plantillas personalizadas para la Web.
Cada permiso tiene las siguientes características:
- Se verifica con las APIs que los requieren.
- Se detecta automáticamente en JavaScript de zona de pruebas según las APIs que se usan. Esto sucede cuando las modificaciones se realizan en el editor de plantillas personalizadas (para obtener ciclo de retroalimentación), y cuando se compila el código (para validar que el se aplican los permisos).
- Puede editarse en el editor de plantillas personalizadas para que el permiso sea más específico.
- Se puede consultar en JavaScript de zona de pruebas a través de la API de
queryPermission
.
access_globals
Nombre visible: Accede a variables globales
Descripción: Permite el acceso a una variable global (que podría incluir APIs sensibles).
Configuración: Lista de claves a las que se puede acceder. Cada tecla es un punto
rutas separadas. Por ejemplo: foo.bar
. El primer token de cada ruta de acceso no debe ser
una clave predefinida en el alcance global del navegador ni una palabra clave de JavaScript. Ha leído,
escribir y ejecutar casillas de verificación que rigen el acceso.
Obligatorio por: setInWindow
, copyFromWindow
, callInWindow
,
createQueue
y createArgumentsQueue
Firma de la consulta: 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>)
Notas: Controla si una plantilla personalizada puede leer o escribir a nivel global. de salida.
Código de ejemplo
const queryPermission = require('queryPermission');
const createQueue = require('createQueue');
if (queryPermission('access_globals', 'readwrite', 'dataLayer')) {
const dataLayerPush = createQueue('dataLayer');
}
access_local_storage
Nombre visible: Accede al almacenamiento local.
Descripción: Permite acceder a las claves especificadas en el almacenamiento local.
Configuración: Lista de claves de almacenamiento local a las que se puede acceder. Este es un un array de claves sencillo, sin comodines. Tiene casillas de verificación de lectura y escritura que controlan el acceso.
Obligatorio para: localStorage
Firma de la consulta: queryPermission('access_local_storage', 'read', <key to
read from>)
, queryPermission('access_local_storage', 'write', <key to write
to>)
o queryPermission('access_local_storage', 'readwrite', <key to read and
write>)
Código de ejemplo
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
Nombre visible: Accede al almacenamiento de plantillas
Descripción: Permite el acceso al almacenamiento temporal para plantillas que pueden: se mantienen durante el ciclo de vida de la página.
Configuración: Ninguna
Obligatorio para: templateStorage
Firma de la consulta: queryPermission('access_template_storage')
Código de ejemplo
const queryPermission = require('queryPermission');
const templateStorage = require('templateStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateStorage.getItem(key);
}
get_cookies
Nombre visible: Lee los valores de las cookies.
Descripción:Lee los valores de las cookies con el nombre especificado.
Configuración: Lista de nombres de cookies que se pueden leer.
Obligatorio para: getCookieValues
Firma de la consulta: queryPermission('get_cookies', <name>)
Notas: Determina si se puede leer una cookie, según su nombre.
Código de ejemplo
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
get_referrer
Nombre visible: Lee la URL de referencia.
Descripción: Permite el acceso de lectura a partes reducidas de la URL de referencia.
Configuración: Los siguientes booleanos controlan qué parte de la URL de referencia se puede usar.
que se leerá. Una parte específica de la URL de referencia solo se puede leer si la parte correspondiente
es true
. El llamador puede llamar a getReferrerUrl
sin que se especifique un componente para
obtener la URL de referencia completa si todos estos booleanos están configurados en true
Si no hay valores
se configura, el valor predeterminado es all
. Si se establece un valor, este debe ser un
array de componentes en el que un componente es uno de los siguientes: protocol
,
host
, port
, path
, query
o extension
.
queryKeys
:
Si se selecciona la consulta, el autor de la plantilla podría limitar aún más el conjunto de
de consulta de las que pueden leer. Se trata de un sencillo array de claves, sin
comodines.
Obligatorio para: getReferrerUrl
, getReferrerQueryParameters
Firma de la consulta: queryPermission('get_referrer', <url_component>)
Código de ejemplo
const queryPermission = require('queryPermission');
const getReferrerUrl = require('getReferrerUrl');
let referrer;
if (queryPermission('get_referrer', 'query')) {
referrer = getReferrerUrl('queryParams');
}
get_url
Nombre visible: lee la URL
Descripción: Muestra una parte o la totalidad de la URL de la página actual.
Configuración: los siguientes booleanos controlan qué parte de la URL se puede
leer. Una parte determinada de la URL solo se puede leer si la parte correspondiente se
true. El llamador puede llamar a getUrl
sin un componente especificado para obtener la
la URL completa solo si todos estos booleanos están configurados como true
. Si no se indica ningún valor
establecido, el valor predeterminado es all
. Si se establece un valor, este debe ser una matriz.
de componentes en los que un componente es uno de los siguientes: protocol
, host
port
, path
, query
, extension
o fragment
.
queryKeys
:
Si se selecciona la consulta, el autor de la plantilla podría limitar aún más el conjunto de
de consulta de las que pueden leer. Se trata de un sencillo array de claves, sin
comodines.
Obligatorio para: getUrl
Firma de la consulta: queryPermission('get_url', <optional url component>,
<optional query key>)
Si se proporciona, el componente de URL debe ser 'protocol'
, 'host'
, 'port'
'path'
, 'query'
, 'extension'
y 'fragment'
. Si se omite, el permiso
es una solicitud de acceso a toda la URL.
Si se proporciona, la clave de consulta debe ser el argumento de la cadena de consulta que la plantilla que tu código quiere leer.
Notas: Controla si una plantilla personalizada puede leer desde la ubicación actual. Permite limitarse a una parte específica de la ubicación.
Código de ejemplo
const queryPermission = require('queryPermission');
const getUrl = require('getUrl');
if (queryPermission('get_url', 'query', 'gclid')) {
const gclid = getUrl('query', false, null, 'gclid');
}
inject_hidden_iframe
Nombre visible: Inserta iframes ocultos.
Descripción: Inserta un iframe invisible con una URL determinada.
Configuración: Lista de patrones de URL
Obligatorio para: injectHiddenIframe
Firma de consulta: queryPermission('inject_hidden_iframe', <url>)
Notas: Determina si una plantilla personalizada puede insertar un iframe invisible. desde qué origen puede hacerlo.
Código de ejemplo
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
Nombre visible: Inserta secuencias de comandos
Descripción: Inserta una secuencia de comandos en la página.
Configuración: Lista de patrones de URL
Obligatorio para: injectScript
Firma de la consulta: queryPermission('inject_script', <url>)
Notas: Determina si una plantilla personalizada puede insertar JavaScript y desde desde qué origen puede hacerlo.
Código de ejemplo
const queryPermission = require('queryPermission');
const injectScript = require('injectScript');
const url = 'https://www.example.com?api.js';
if (queryPermission('inject_script', url)) {
injectScript(url);
}
registro
Nombre visible: Registros a la consola
Descripción: Accede a Play Console y al modo de vista previa de GTM.
Configuración: Es la opción para habilitar el registro en la producción. La configuración predeterminada es solo
habilitar el acceso en depuración/vista previa. Si se niega el permiso, logToConsole
hará lo siguiente
no arrojará un error, pero suprimirá el mensaje de registro.
Obligatorio para: logToConsole
Firma de la consulta: queryPermission('logging')
Notas: Controla si una plantilla personalizada puede registrarse en Play Console.
Código de ejemplo
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
Nombre visible: Lee la capa de datos.
Descripción: Lee datos de dataLayer.
Configuración: conjunto de expresiones de coincidencia de clave, en el que una coincidencia de clave puede ser una serie inicial de referencias punteadas, con un comodín final. Coincidencia de clave y las expresiones controlan qué propiedades se pueden leer desde la capa de datos.
Requisito de: copyFromDataLayer
Firma de la consulta: queryPermission('read_data_layer', <data layer key to read
from>)
Notas: Controla si una plantilla personalizada puede leer desde la capa de datos.
Código de ejemplo
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
Nombre visible: Lee el grupo de caracteres del documento.
Descripción:Lee document.characterSet
.
Configuración: Ninguna
Obligatorio para: readCharacterSet
Firma de la consulta: queryPermission('read_character_set')
Notas: Determina si una plantilla personalizada puede leer document.characterSet
.
Código de ejemplo
const queryPermission = require('queryPermission');
const readCharacterSet = require('readCharacterSet');
if (queryPermission('read_character_set')) {
const characterSet = readCharacterSet();
}
read_container_data
Nombre visible: Lee datos del contenedor
Descripción:Lee datos sobre el contenedor.
Configuración: Ninguna
Obligatorio para: getContainerVersion
Firma de la consulta: queryPermission('read_container_data')
Notas: Controla si una plantilla personalizada puede leer datos sobre el contenedor.
Código de ejemplo
const queryPermission = require('queryPermission');
const getCookieValues = require('getContainerVersion');
let version;
if (queryPermission('read_container_data')) {
version = getContainerVersion();
}
read_event_metadata
Nombre visible: Lee los metadatos del evento.
Descripción:Lee los metadatos de eventos en las devoluciones de llamada de eventos
Configuración: Ninguna
Obligatorio para: addEventCallback
Firma de la consulta: queryPermission('read_event_metadata')
Notas: Controla si una plantilla personalizada puede leer metadatos de eventos en devoluciones de llamada.
Código de ejemplo
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
read_title
Nombre visible: Lee el título del documento.
Descripción:Lee document.title
.
Configuración: Ninguna
Obligatorio para: readTitle
Firma de la consulta: queryPermission('read_title')
Notas: Determina si una plantilla personalizada puede leer los document.title
.
Código de ejemplo
const queryPermission = require('queryPermission');
const readTitle = require('readTitle');
if (queryPermission('read_title')) {
const title = readTitle();
}
send_pixel
Nombre visible: Envía píxeles.
Descripción:Envía una solicitud GET a una URL especificada. La respuesta no es se procesan.
Configuración: Lista de patrones de URL permitidos.
Obligatorio para: sendPixel
Firma de la consulta: queryPermission('send_pixel', <url>)
Notas: Determina si una plantilla personalizada puede enviar una solicitud GET y a con qué origen puede hacerlo.
Código de ejemplo
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
Nombre visible: Establece una cookie.
Descripción:Configura una cookie con el nombre y los parámetros especificados.
Configuración: una tabla de nombres de cookies permitidas, cada uno con
Restricciones sobre el nombre, el dominio, la ruta de acceso, el atributo secure
y el vencimiento.
Obligatorio para: setCookie
Firma de la consulta: queryPermission('set_cookies', <name>, <options>)
Notas: Determina si se puede escribir una cookie en función de ella.
nombre, dominio, ruta de acceso, atributo secure
y vencimiento.
Código de ejemplo
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
Nombre visible: Escribe la capa de datos.
Descripción: Escribe datos en dataLayer.
Configuración: conjunto de expresiones de coincidencia de clave, en el que una coincidencia de clave puede ser una serie inicial de referencias punteadas, con un comodín final. Coincidencia de clave y las expresiones controlan qué propiedades pueden escribir en la capa de datos.
Obligatorio para: gtagSet
Firma de la consulta: queryPermission('write_data_layer', <data layer key to
write from>)
Notas: Controla si una plantilla personalizada puede escribir en la capa de datos.
Código de ejemplo
const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
gtagSet({dlKey: 'baz'});
}