W tym dokumencie opisujemy uprawnienia do niestandardowych szablonów internetowych.
Każde uprawnienie:
- Sprawdzane przez interfejsy API, które ich wymagają.
- Automatycznie wykrywane w JavaScript w trybie piaskownicy na podstawie używanych interfejsów API. Dzieje się tak, gdy zmiany są wprowadzane w edytorze szablonów niestandardowych (aby przyspieszyć pętlę informacji zwrotnych) oraz gdy kod jest kompilowany (w celu sprawdzenia, czy egzekwowane są odpowiednie uprawnienia).
- Możesz je edytować w edytorze szablonów niestandardowych w celu sprecyzowania uprawnienia.
- Możliwość wysyłania zapytań w języku JavaScript w trybie piaskownicy przez interfejs API
queryPermission
.
access_globals
Wyświetlana nazwa: uzyskuje dostęp do zmiennych globalnych.
Opis: umożliwia dostęp do zmiennej globalnej (w tym potencjalnie poufnych interfejsów API).
Konfiguracja: lista kluczy, do których można uzyskać dostęp. Każdy klucz jest ścieżką oddzieloną kropkami. Na przykład: foo.bar
Pierwszy token w każdej ścieżce nie może być wstępnie zdefiniowanym kluczem w zakresie globalnym przeglądarki ani słowem kluczowym JavaScript. Ma pola wyboru do odczytu, zapisu i wykonywania, które określają dostęp.
Wymagane przez: setInWindow
, copyFromWindow
, callInWindow
,
createQueue
, createArgumentsQueue
Podpis zapytania: 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>)
lub queryPermission('access_globals', 'execute', <key of function to execute>)
Uwagi: określa, czy szablon niestandardowy może odczytywać wartości globalne lub w nich zapisywać.
Przykładowy kod
const queryPermission = require('queryPermission');
const createQueue = require('createQueue');
if (queryPermission('access_globals', 'readwrite', 'dataLayer')) {
const dataLayerPush = createQueue('dataLayer');
}
access_local_storage
Wyświetlana nazwa: uzyskuje dostęp do pamięci lokalnej
Opis: umożliwia dostęp do określonych kluczy w pamięci lokalnej.
Konfiguracja: lista kluczy pamięci lokalnej, do których można uzyskać dostęp. To prosta tablica kluczy bez symboli wieloznacznych. Ma pola wyboru do odczytu i zapisu, które zarządzają dostępem.
Wymagane przez: localStorage
Podpis zapytania: queryPermission('access_local_storage', 'read', <key to
read from>)
, queryPermission('access_local_storage', 'write', <key to write
to>)
lub queryPermission('access_local_storage', 'readwrite', <key to read and
write>)
Przykładowy kod
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
Wyświetlana nazwa: uzyskuje dostęp do pamięci szablonów.
Opis: zezwala na dostęp do tymczasowego miejsca na dane na potrzeby szablonów, które mogą istnieć przez cały okres istnienia strony.
Konfiguracja: brak
Wymagane przez: templateStorage
Podpis zapytania: queryPermission('access_template_storage')
Przykładowy kod
const queryPermission = require('queryPermission');
const templateStorage = require('templateStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateStorage.getItem(key);
}
get_cookies
Wyświetlana nazwa: odczytuje wartości plików cookie.
Opis: odczytuje wartości plików cookie o określonej nazwie.
Konfiguracja: lista nazw plików cookie, które mogą być odczytywane.
Wymagane przez: getCookieValues
Podpis zapytania: queryPermission('get_cookies', <name>)
Uwagi: określa, czy plik cookie może być odczytywany w zależności od jego nazwy.
Przykładowy kod
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
get_referrer
Wyświetlana nazwa: odczytuje adres URL strony odsyłającej.
Opis: zezwala na uprawnienia do odczytu ograniczonych fragmentów strony odsyłającej.
Konfiguracja: poniższe wartości logiczne określają, którą część strony odsyłającej można odczytać. Daną część strony odsyłającej można odczytać tylko wtedy, gdy powiązana z nią część to true
. Element wywołujący może wywołać getReferrerUrl
bez komponentu skonfigurowanego do pobierania pełnego adresu URL strony odsyłającej, jeśli wszystkie te wartości logiczne są ustawione na true
. Jeśli nie zostanie ustawiona żadna wartość, domyślną wartością będzie all
. Jeśli wartość jest ustawiona, musi być ona tablicą komponentów, w której komponent jest jednym z tych elementów: protocol
, host
, port
, path
, query
lub extension
.
queryKeys
:
Jeśli wybierzesz zapytanie, autor szablonu może jeszcze bardziej ograniczyć zestaw kluczy zapytania, z których może odczytywać dane. To prosta tablica kluczy bez symboli wieloznacznych.
Wymagane przez: getReferrerUrl
, getReferrerQueryParameters
Podpis zapytania: queryPermission('get_referrer', <url_component>)
Przykładowy kod
const queryPermission = require('queryPermission');
const getReferrerUrl = require('getReferrerUrl');
let referrer;
if (queryPermission('get_referrer', 'query')) {
referrer = getReferrerUrl('queryParams');
}
get_url
Wyświetlana nazwa: odczytuje adres URL
Opis: zwraca część lub całość adresu URL bieżącej strony.
Konfiguracja: poniższe wartości logiczne określają, którą część adresu URL można odczytać. Daną część adresu URL można odczytać tylko wtedy, gdy odpowiednia część ma wartość prawda. Element wywołujący może wywołać funkcję getUrl
bez określonego komponentu tak, aby uzyskać cały adres URL tylko wtedy, gdy wszystkie te wartości logiczne mają wartość true
. Jeśli nie zostanie ustawiona żadna wartość, domyślną wartością będzie all
. Jeśli wartość jest ustawiona, musi być ona tablicą komponentów, w których komponent jest jednym z tych elementów: protocol
, host
, port
, path
, query
, extension
lub fragment
.
queryKeys
:
Jeśli wybierzesz zapytanie, autor szablonu może jeszcze bardziej ograniczyć zestaw kluczy zapytania, z których może odczytywać dane. To prosta tablica kluczy bez symboli wieloznacznych.
Wymagane przez: getUrl
Podpis zapytania: queryPermission('get_url', <optional url component>,
<optional query key>)
Jeśli jest podany, komponent URL powinien mieć wartość 'protocol'
, 'host'
, 'port'
, 'path'
, 'query'
, 'extension'
lub 'fragment'
. W przeciwnym razie zapytanie o uprawnienia to żądanie dostępu do całego adresu URL.
Jeśli klucz zapytania zostanie podany, powinien być argumentem ciągu zapytania, który kod szablonu chce odczytać.
Uwagi: określa, czy szablon niestandardowy może odczytywać dane z bieżącej lokalizacji. Umożliwia ograniczenie do określonej części lokalizacji.
Przykładowy kod
const queryPermission = require('queryPermission');
const getUrl = require('getUrl');
if (queryPermission('get_url', 'query', 'gclid')) {
const gclid = getUrl('query', false, null, 'gclid');
}
inject_hidden_iframe
Wyświetlana nazwa: wstrzykuje ukryte elementy iframe
Opis: wstrzykuje niewidoczny element iframe z podanym adresem URL.
Konfiguracja: lista wzorców adresów URL
Wymagane przez: injectHiddenIframe
Podpis zapytania: queryPermission('inject_hidden_iframe', <url>)
Uwagi: określa, czy szablon niestandardowy może wstrzykiwać niewidoczny element iframe i z jakiego źródła może to robić.
Przykładowy kod
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
Wyświetlana nazwa: wstrzykuje skrypty
Opis: wstawia skrypt na stronie.
Konfiguracja: lista wzorców adresów URL
Wymagane przez: injectScript
Podpis zapytania: queryPermission('inject_script', <url>)
Uwagi: określa, czy szablon niestandardowy może wstrzykiwać kod JavaScript i z jakiego źródła może to robić.
Przykładowy kod
const queryPermission = require('queryPermission');
const injectScript = require('injectScript');
const url = 'https://www.example.com?api.js';
if (queryPermission('inject_script', url)) {
injectScript(url);
}
logowanie
Wyświetlana nazwa: umożliwia logowanie się do konsoli.
Opis: umożliwia zalogowanie się w konsoli programisty i w trybie podglądu Menedżera tagów Google.
Konfiguracja: opcja włączania logowania w środowisku produkcyjnym. Domyślnie logowanie jest włączone tylko w trybie debugowania/podglądu. W przypadku odmowy uprawnień logToConsole
nie zgłosi błędu, ale zablokuje komunikat logu.
Wymagane przez: logToConsole
Podpis zapytania: queryPermission('logging')
Uwagi: określa, czy szablon niestandardowy może logować się w konsoli programisty.
Przykładowy kod
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
Wyświetlana nazwa: odczytuje warstwę danych.
Opis: odczytuje dane z dataLayer.
Konfiguracja: zestaw wyrażeń dopasowania klucza, w których dopasowanie do klucza może być główną serią odwołań dokropkowanych, z końcowym symbolem wieloznacznym. Kluczowe wyrażenia dopasowania określają, które właściwości mogą być odczytywane z warstwy danych.
Wymagane przez: copyFromDataLayer
Podpis zapytania: queryPermission('read_data_layer', <data layer key to read
from>)
Uwagi: określa, czy szablon niestandardowy może odczytywać dane z warstwy danych.
Przykładowy kod
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
Wyświetlana nazwa: odczytuje zestaw znaków dokumentu.
Opis: czyta document.characterSet
.
Konfiguracja: brak
Wymagane przez: readCharacterSet
Podpis zapytania: queryPermission('read_character_set')
Uwagi: określa, czy szablon niestandardowy może odczytywać wartość document.characterSet
.
Przykładowy kod
const queryPermission = require('queryPermission');
const readCharacterSet = require('readCharacterSet');
if (queryPermission('read_character_set')) {
const characterSet = readCharacterSet();
}
read_container_data
Wyświetlana nazwa: odczytuje dane kontenera
Opis: odczytuje dane o kontenerze.
Konfiguracja: brak
Wymagane przez: getContainerVersion
Podpis zapytania: queryPermission('read_container_data')
Uwagi: określa, czy szablon niestandardowy może odczytywać dane o kontenerze.
Przykładowy kod
const queryPermission = require('queryPermission');
const getCookieValues = require('getContainerVersion');
let version;
if (queryPermission('read_container_data')) {
version = getContainerVersion();
}
read_event_metadata
Wyświetlana nazwa: odczytuje metadane zdarzenia.
Opis: odczytuje metadane zdarzeń w wywołaniach zwrotnych zdarzeń.
Konfiguracja: brak
Wymagane przez: addEventCallback
Podpis zapytania: queryPermission('read_event_metadata')
Uwagi: określa, czy szablon niestandardowy może odczytywać metadane zdarzenia w wywołaniach zwrotnych.
Przykładowy kod
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
read_title
Wyświetlana nazwa: odczytuje tytuł dokumentu.
Opis: czyta document.title
.
Konfiguracja: brak
Wymagane przez: readTitle
Podpis zapytania: queryPermission('read_title')
Uwagi: określa, czy szablon niestandardowy może odczytywać document.title
.
Przykładowy kod
const queryPermission = require('queryPermission');
const readTitle = require('readTitle');
if (queryPermission('read_title')) {
const title = readTitle();
}
send_pixel
Wyświetlana nazwa: wysyła piksele.
Opis: wysyła żądanie GET pod określony adres URL. Odpowiedź nie jest przetwarzana.
Konfiguracja: lista dozwolonych wzorców adresów URL.
Wymagane przez: sendPixel
Podpis zapytania: queryPermission('send_pixel', <url>)
Uwagi: określa, czy szablon niestandardowy może wysyłać żądania GET i dokąd może to robić.
Przykładowy kod
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
Wyświetlana nazwa: ustawia plik cookie.
Opis: ustawia plik cookie o określonej nazwie i parametrach.
Konfiguracja: tabela dozwolonych nazw plików cookie z opcjonalnymi ograniczeniami dotyczącymi nazwy, domeny, ścieżki, atrybutu secure
i okresu ważności.
Wymagane przez: setCookie
Podpis zapytania: queryPermission('set_cookies', <name>, <options>)
Uwagi: określa, czy plik cookie może być zapisywany w zależności od nazwy pliku cookie, domeny, ścieżki, atrybutu secure
i okresu ważności.
Przykładowy kod
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
Wyświetlana nazwa: zapisuje warstwę danych.
Opis: zapisuje dane w dataLayer.
Konfiguracja: zestaw wyrażeń dopasowania klucza, w których dopasowanie do klucza może być główną serią odwołań dokropkowanych, z końcowym symbolem wieloznacznym. Kluczowe wyrażenia dopasowania określają, które usługi mogą zapisywać dane w warstwie danych.
Wymagane przez: gtagSet
Podpis zapytania: queryPermission('write_data_layer', <data layer key to
write from>)
Uwagi: określa, czy szablon niestandardowy może zapisywać dane w warstwie danych.
Przykładowy kod
const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
gtagSet({dlKey: 'baz'});
}