W tym dokumencie opisujemy uprawnienia dotyczące niestandardowych szablonów internetowych.
Każde uprawnienie to:
- Sprawdzane przez interfejsy API, które ich wymagają.
- Automatycznie wykrywany w JavaScripcie w trybie piaskownicy na podstawie używanych interfejsów API. Dzieje się tak, gdy zmiany są wprowadzane w edytorze niestandardowych szablonów (aby przyspieszyć pętlę informacji zwrotnych) oraz podczas kompilowania kodu (w celu sprawdzenia, czy egzekwowane są odpowiednie uprawnienia).
- Uprawnienia można edytować w edytorze szablonów niestandardowych, aby były bardziej szczegółowe.
- Możliwość wysyłania zapytań w języku JavaScript w trybie piaskownicy przez interfejs API
queryPermission
.
globaly_dostępu
Wyświetlana nazwa: uzyskuje dostęp do zmiennych globalnych.
Opis: umożliwia dostęp do zmiennej globalnej (w tym potencjalnie z uwzględnieniem 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 regulują 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 je zapisywać.
Przykładowy kod
const queryPermission = require('queryPermission');
const createQueue = require('createQueue');
if (queryPermission('access_globals', 'readwrite', 'dataLayer')) {
const dataLayerPush = createQueue('dataLayer');
}
dostęp_lokalnego_miejsca_na_dane
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 jest 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);
}
miejsce_w_szablonie_dostępu
Wyświetlana nazwa: uzyskuje dostęp do pamięci szablonów.
Opis: umożliwia dostęp do tymczasowego miejsca na dane na potrzeby szablonów, które mogą być przechowywane 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 odczyt 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 odpowiednią częścią jest true
. Element wywołujący może wywoływać getReferrerUrl
bez określonego komponentu tak, aby pobierał pełny adres URL strony odsyłającej, jeśli wszystkie te wartości logiczne mają wartość true
. Jeśli nie ustawiono żadnej wartości, domyślną wartością jest all
. Jeśli wartość jest ustawiona, wartość musi być tablicą komponentów, w których komponent jest jednym z tych elementów: protocol
, host
, port
, path
, query
lub extension
.
queryKeys
: po wybraniu zapytania autor szablonu może jeszcze bardziej ograniczyć zestaw kluczy zapytania, z których może odczytywać dane. Jest 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');
}
pobierz_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 powiązana z nią część jest prawda. Element wywołujący może wywoływać getUrl
bez określonego komponentu w celu uzyskania całego adresu URL tylko wtedy, gdy wszystkie te wartości logiczne mają wartość true
. Jeśli nie ustawisz żadnej wartości, domyślną wartością będzie all
. Jeśli wartość jest ustawiona, wartość musi być tablicą komponentów, których komponent jest jednym z tych elementów: protocol
, host
, port
, path
, query
, extension
lub fragment
.
queryKeys
: po wybraniu zapytania autor szablonu może jeszcze bardziej ograniczyć zestaw kluczy zapytania, z których może odczytywać dane. Jest to prosta tablica kluczy bez symboli wieloznacznych.
Wymagane przez: getUrl
Podpis zapytania: queryPermission('get_url', <optional url component>,
<optional query key>)
Jeśli został podany, komponent URL powinien mieć jedną z tych wartości: 'protocol'
, 'host'
, 'port'
, 'path'
, 'query'
, 'extension'
lub 'fragment'
. Jeśli jest pominięty, zapytanie o uprawnienia jest żądaniem 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: wstawia ukryte elementy iframe
Opis: wstawia 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 zrobić.
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);
}
wstrzykiwanie_skryptu
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 do konsoli.
Opis: umożliwia logowanie 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 uprawnienia 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ń kluczowych dopasowania, w których dopasowanie klucza może być główną serią odwołań z kropkami, z końcowym symbolem wieloznacznym. Wyrażenia kluczy 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 (zestaw_znaków_odczytu)
Wyświetlana nazwa: odczytuje zestaw znaków dokumentu.
Opis: odczyty: document.characterSet
.
Konfiguracja: brak
Wymagane przez: readCharacterSet
Podpis zapytania: queryPermission('read_character_set')
Uwagi: określa, czy szablon niestandardowy może odczytywać document.characterSet
.
Przykładowy kod
const queryPermission = require('queryPermission');
const readCharacterSet = require('readCharacterSet');
if (queryPermission('read_character_set')) {
const characterSet = readCharacterSet();
}
dane_kontenera_odczytu
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 (tytuł)
Wyświetlana nazwa: odczytuje tytuł dokumentu.
Opis: odczyty: 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 do określonego adresu 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);
}
ustawianie_plików cookie
Wyświetlana nazwa: ustawia plik cookie.
Opis: ustawia plik cookie z określoną nazwą i określonymi parametrami.
Konfiguracja: tabela dozwolonych nazw plików cookie, z których każda ma opcjonalne ograniczenia dotyczące 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 można zapisywać plik cookie, 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);
}
zapis_warstwy_danych
Wyświetlana nazwa: zapisuje warstwę danych
Opis: zapisuje dane w dataLayer.
Konfiguracja: zestaw wyrażeń kluczowych dopasowania, w których dopasowanie klucza może być główną serią odwołań z kropkami, z końcowym symbolem wieloznacznym. Wyrażenia kluczy 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'});
}