Uprawnienia dotyczące szablonów niestandardowych

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