W tym dokumencie opisujemy uprawnienia do niestandardowych szablonów internetowych.
Każde uprawnienie:
- Sprawdzane przez interfejsy API, które ich wymagają.
- Wykrywane automatycznie w piaskownicy JavaScript na podstawie używanych interfejsów API. Dzieje się tak podczas wprowadzania zmian w edytorze szablonów niestandardowych (aby uzyskać szybką pętlę opinii) oraz podczas kompilowania kodu (aby sprawdzić, czy są egzekwowane prawidłowe uprawnienia).
- Można go edytować w edytorze szablonów niestandardowych, aby doprecyzować uprawnienie.
- Można go wysyłać w zapytaniach w izolowanym środowisku JavaScript za pomocą interfejsu
queryPermission
API.
access_globals
Nazwa wyświetlana: uzyskiwanie dostępu do zmiennych globalnych
Opis: umożliwia dostęp do zmiennej globalnej (potencjalnie w tym wrażliwych interfejsów API).
Konfiguracja: lista kluczy, do których można uzyskać dostęp. Każdy klucz to ścieżka rozdzielona kropkami. 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 JavaScriptu. Zawiera pola wyboru 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>)
lub queryPermission('access_globals', 'write', <key to write to>)
lub
queryPermission('access_globals', 'readwrite', <key to read and write>)
lub
queryPermission('access_globals', 'execute', <key of function to execute>)
Notatki: określa, czy szablon niestandardowy może odczytywać i zapisywać wartości globalne.
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: 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. Jest to prosty ciąg kluczy bez symboli wieloznacznych. Zawiera pola wyboru odczytu i zapisu, które określają dostęp.
Wymagane przez: localStorage
Sygnatura 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: dostęp do pamięci szablonów
Opis: umożliwia dostęp do pamięci tymczasowej szablonów, które mogą być przechowywane przez cały czas działania 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: Odczyt wartości plików cookie
Opis: odczyt wartości plików cookie o określonych nazwach.
Konfiguracja: lista nazw plików cookie, które można odczytywać.
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
Nazwa wyświetlana: odczyt adresu URL strony odsyłającej
Opis: umożliwia dostęp z możliwością odczytu do zawężonych części adresu URL strony odsyłającej.
Konfiguracja: te wartości logiczne określają, która część adresu URL odsyłającego może być odczytywana. Daną część adresu URL odsyłającego można odczytać tylko wtedy, gdy odpowiednia część jest true
. Jeśli wszystkie te wartości logiczne są ustawione na true
, dzwoniący może wywołać funkcję getReferrerUrl
bez podawania komponentu, aby uzyskać pełny adres URL odsyłający. Jeśli nie ustawisz żadnej wartości, domyślną wartością będzie all
. Jeśli wartość jest ustawiona, musi to być tablica komponentów, z których każdy jest jednym z tych typów: protocol
, host
, port
, path
, query
lub extension
.
queryKeys
:
Jeśli wybrano zapytanie, autor szablonu może dodatkowo ograniczyć zestaw kluczy zapytań, 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');
}
get_url
Nazwa wyświetlana: Odczytywanie URL
Opis: wyświetla cały adres URL bieżącej strony lub jego część.
Konfiguracja: te wartości logiczne określają, która część adresu URL może być odczytywana. Daną część adresu URL można odczytać tylko wtedy, gdy odpowiednia część ma wartość „true”. Rozmówca może zadzwonić pod numer getUrl
bez podawania komponentu, aby uzyskać cały adres URL, tylko wtedy, gdy wszystkie te wartości logiczne są ustawione na true
. Jeśli nie podasz żadnej wartości, domyślną wartością będzie all
. Jeśli wartość jest ustawiona, musi to być tablica komponentów, z których każdy jest jednym z tych typów: protocol
, host
, port
, path
, query
, extension
lub fragment
.
queryKeys
:
Jeśli wybrano zapytanie, autor szablonu może dodatkowo ograniczyć zestaw kluczy zapytań, 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 podano komponent Url, powinien on być jednym z tych typów: 'protocol'
, 'host'
, 'port'
, 'path'
, 'query'
, 'extension'
, 'fragment'
. Jeśli ten parametr zostanie pominięty, zapytanie o uprawnienia będzie prośbą o dostęp do całego adresu URL.
Jeśli zostanie podany, klucz zapytania 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
Nazwa wyświetlana: wstrzykiwanie ukrytych elementów iframe
Opis: wstawia niewidoczny element iframe z określonym 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 wstawiać 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
Nazwa wyświetlana: wstrzykiwanie skryptów
Opis: umieszcza 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 wstawiać 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
Nazwa wyświetlana: logowanie do konsoli
Opis: umożliwia logowanie do konsoli programisty i trybu podglądu Menedżera tagów Google.
Konfiguracja: opcja włączania logowania w wersji produkcyjnej. Domyślnie włącza rejestrowanie tylko w trybie debugowania lub podglądu. Jeśli uprawnienia zostaną odrzucone, funkcja logToConsole
nie zgłosi błędu, ale pominie komunikat w dzienniku.
Wymagane przez: logToConsole
Podpis zapytania: queryPermission('logging')
Uwagi: określa, czy szablon niestandardowy może rejestrować dane w konsoli dewelopera.
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
Nazwa wyświetlana: odczytuje warstwę danych.
Opis: odczytuje dane z obiektu dataLayer.
Konfiguracja: zestaw wyrażeń dopasowania klucza, gdzie dopasowanie klucza może być ciągiem odwołań z kropkami na początku i symbolem wieloznacznym na końcu. Wyrażenia dopasowania klucza określają, które właściwości można odczytać 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_analytics_storage
Wyświetlana nazwa: odczytywanie pamięci Analytics
Opis: umożliwia to szablonowi odczytywanie zapisanych danych analitycznych, takich jak identyfikatory klientów.
Konfiguracja: brak
Wymagane przez: readAnalyticsStorage
Podpis zapytania: queryPermission('read_analytics_storage')
Uwagi: określa, czy szablon niestandardowy może odczytywać dane z pamięci Analytics.
Przykładowy kod
const queryPermission = require('queryPermission');
const readAnalyticsStorage = require('readAnalyticsStorage');
if (queryPermission('read_analytics_storage')) {
const value = readAnalyticsStorage();
}
read_character_set
Wyświetlana nazwa: odczytuje zestaw znaków dokumentu
Opis: odczytuje 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();
}
read_container_data
Nazwa wyświetlana: odczyt danych 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
Nazwa wyświetlana: odczyt metadanych zdarzenia
Opis: odczytuje metadane zdarzenia w wywołaniach zwrotnych zdarzenia.
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
Nazwa wyświetlana: odczytuje tytuł dokumentu
Opis: odczytuje document.title
.
Konfiguracja: brak
Wymagane przez: readTitle
Podpis zapytania: queryPermission('read_title')
Uwagi: określa, czy szablon niestandardowy może odczytywać wartość 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łanie pikseli
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ć żądanie GET i do jakiego pochodzenia 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 z określoną nazwą i wybranymi parametrami.
Konfiguracja: tabela dozwolonych nazw plików cookie, z których każda może mieć opcjonalne ograniczenia dotyczące nazwy, domeny, ścieżki, atrybutu secure
i daty ważności.
Wymagane przez: setCookie
Podpis zapytania: queryPermission('set_cookies', <name>, <options>)
Uwagi: określa, czy można zapisać plik cookie, w zależności od nazwy pliku cookie, domeny, ścieżki, atrybutu secure
i daty 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
Nazwa wyświetlana: zapisuje dane w warstwie danych
Opis: zapisuje dane w atrybucie dataLayer.
Konfiguracja: zestaw wyrażeń dopasowania klucza, gdzie dopasowanie klucza może być ciągiem odwołań z kropkami na początku i symbolem wieloznacznym na końcu. Wyrażenia dopasowania klucza 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'});
}