Uprawnienia dotyczące szablonów niestandardowych

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