Izin template kustom

Dokumen ini berisi penjelasan tentang izin untuk template kustom Web.


Setiap izin:

  • Diperiksa oleh API yang mewajibkannya.
  • Terdeteksi secara otomatis dalam JavaScript dengan sandbox, berdasarkan API yang digunakan. Hal ini terjadi saat pengeditan dilakukan di editor template kustom (untuk feedback loop yang cepat), dan saat kode dikompilasi (untuk memvalidasi bahwa izin yang benar telah diterapkan).
  • Dapat diedit di editor template kustom, untuk menjadikan izin lebih spesifik.
  • Dapat dikueri dalam JavaScript dengan sandbox melalui API queryPermission.

access_globals

Nama tampilan: Mengakses variabel global

Deskripsi: Mengizinkan akses ke variabel global (kemungkinan termasuk API sensitif).

Konfigurasi: Daftar kunci yang dapat diakses. Setiap kunci adalah jalur yang dipisahkan titik. Contoh: foo.bar Token pertama di setiap jalur tidak boleh berupa kunci yang telah ditentukan di cakupan global browser, atau kata kunci JavaScript. Memiliki kotak centang baca, tulis, dan eksekusi yang mengatur akses.

Diwajibkan oleh: setInWindow, copyFromWindow, callInWindow, createQueue, createArgumentsQueue

Signature kueri: queryPermission('access_globals', 'read', <key to read from>) atau queryPermission('access_globals', 'write', <key to write to>) atau queryPermission('access_globals', 'readwrite', <key to read and write>) atau queryPermission('access_globals', 'execute', <key of function to execute>)

Catatan: Mengontrol apakah template kustom dapat membaca dan/atau menulis ke nilai global.

Kode contoh

const queryPermission = require('queryPermission');
const createQueue = require('createQueue');
if (queryPermission('access_globals', 'readwrite', 'dataLayer')) {
  const dataLayerPush = createQueue('dataLayer');
}

access_local_storage

Nama tampilan: Mengakses penyimpanan lokal

Deskripsi: Mengizinkan akses ke kunci yang ditentukan di penyimpanan lokal.

Konfigurasi: Daftar kunci penyimpanan lokal yang dapat diakses. Daftar ini adalah array kunci sederhana, tanpa karakter pengganti. Memiliki kotak centang baca dan tulis yang mengatur akses.

Diwajibkan oleh: localStorage

Signature kueri: queryPermission('access_local_storage', 'read', <key to read from>) atau queryPermission('access_local_storage', 'write', <key to write to>) atau queryPermission('access_local_storage', 'readwrite', <key to read and write>)

Kode contoh

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

Nama tampilan: Mengakses penyimpanan template

Deskripsi: Mengizinkan akses ke penyimpanan sementara untuk template yang dapat bertahan sepanjang waktu halaman.

Konfigurasi: Tidak ada

Diwajibkan oleh: templateStorage

Signature kueri: queryPermission('access_template_storage')

Kode contoh

const queryPermission = require('queryPermission');
const templateStorage = require('templateStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
  const value = templateStorage.getItem(key);
}

get_cookies

Nama tampilan: Membaca nilai cookie

Deskripsi: Membaca nilai cookie dengan nama yang ditentukan.

Konfigurasi: Daftar nama cookie yang diizinkan untuk dibaca.

Diwajibkan oleh: getCookieValues

Signature kueri: queryPermission('get_cookies', <name>)

Catatan: Mengatur apakah cookie dapat dibaca, bergantung pada namanya.

Kode contoh

const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
  cookieValues = getCookieValues(cookieName);
}

get_referrer

Nama tampilan: Membaca URL perujuk

Deskripsi: Mengizinkan akses baca ke bagian perujuk yang dipersempit.

Konfigurasi: Boolean berikut mengatur bagian perujuk mana yang dapat dibaca. Bagian tertentu dari perujuk hanya dapat dibaca jika bagian yang sesuai adalah true. Pemanggil dapat memanggil getReferrerUrl tanpa komponen yang ditentukan untuk mendapatkan URL perujuk lengkap jika semua boolean ini ditetapkan ke true. Jika tidak ada nilai yang ditetapkan, nilai defaultnya adalah all. Jika sebuah nilai ditetapkan, nilai tersebut harus berupa array komponen yang komponennya adalah salah satu dari yang berikut ini: protocol, host, port, path, query, atau extension.

queryKeys: Jika kueri dipilih, pembuat template dapat lebih membatasi kumpulan kunci kueri yang dapat dibacanya. Kumpulan ini adalah array kunci sederhana, tanpa karakter pengganti.

Diwajibkan oleh: getReferrerUrl, getReferrerQueryParameters

Signature kueri: queryPermission('get_referrer', <url_component>)

Kode contoh

const queryPermission = require('queryPermission');
const getReferrerUrl = require('getReferrerUrl');
let referrer;
if (queryPermission('get_referrer', 'query')) {
  referrer = getReferrerUrl('queryParams');
}

get_url

Nama tampilan: Membaca URL

Deskripsi: Menampilkan sebagian atau seluruh URL dari halaman saat ini.

Konfigurasi: Boolean berikut mengatur bagian URL mana yang dapat dibaca. Bagian URL tertentu hanya dapat dibaca jika bagian yang sesuai adalah benar. Pemanggil dapat memanggil getUrl tanpa komponen yang ditentukan untuk mendapatkan keseluruhan URL jika dan hanya jika semua boolean ini ditetapkan ke true. Jika tidak ada nilai yang ditetapkan, nilai defaultnya adalah all. Jika nilai ditetapkan, nilai tersebut harus berupa array komponen yang komponennya adalah salah satu dari yang berikut ini: protocol, host, port, path, query, extension, atau fragment.

queryKeys: Jika kueri dipilih, pembuat template dapat lebih membatasi kumpulan kunci kueri yang dapat dibacanya. Kumpulan ini adalah array kunci sederhana, tanpa karakter pengganti.

Diwajibkan oleh: getUrl

Signature kueri: queryPermission('get_url', <optional url component>, <optional query key>)

Jika disediakan, komponen URL harus berupa salah satu dari 'protocol', 'host', 'port', 'path', 'query', 'extension', 'fragment'. Jika dihilangkan, kueri izin adalah permintaan untuk mengakses seluruh URL.

Jika disediakan, kunci kueri harus berupa argumen string kueri yang ingin dibaca oleh kode template.

Catatan: Mengontrol apakah template kustom dapat membaca dari lokasi saat ini. Mengizinkan pembatasan ke bagian tertentu di lokasi.

Kode contoh

const queryPermission = require('queryPermission');
const getUrl = require('getUrl');
if (queryPermission('get_url', 'query', 'gclid')) {
  const gclid = getUrl('query', false, null, 'gclid');
}

inject_hidden_iframe

Nama tampilan: Memasukkan iframe tersembunyi

Deskripsi: Memasukkan iframe tersembunyi dengan URL tertentu.

Konfigurasi: Daftar pola URL

Diwajibkan oleh: injectHiddenIframe

Signature kueri: queryPermission('inject_hidden_iframe', <url>)

Catatan: Mengatur apakah template kustom dapat memasukkan iFrame yang tidak terlihat, dan dari lokasi mana template kustom dapat melakukannya.

Kode contoh

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

Nama tampilan: Memasukkan skrip

Deskripsi: Memasukkan skrip ke halaman.

Konfigurasi: Daftar pola URL

Diwajibkan oleh: injectScript

Signature kueri: queryPermission('inject_script', <url>)

Catatan: Mengatur apakah template kustom dapat memasukkan JavaScript, dan dari lokasi mana template kustom dapat melakukannya.

Kode contoh

const queryPermission = require('queryPermission');
const injectScript = require('injectScript');
const url = 'https://www.example.com?api.js';
if (queryPermission('inject_script', url)) {
  injectScript(url);
}

logging

Nama tampilan: Logging untuk konsol

Deskripsi: Logging untuk konsol developer dan mode pratinjau GTM.

Konfigurasi: Opsi untuk mengaktifkan logging dalam produksi. Setelan defaultnya hanya mengaktifkan logging di debug/pratinjau. Jika izin ditolak, logToConsole tidak akan menampilkan error, tetapi akan menyembunyikan pesan log.

Diwajibkan oleh: logToConsole

Signature kueri: queryPermission('logging')

Catatan: Mengontrol apakah template kustom dapat melakukan logging ke konsol developer.

Kode contoh

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

Nama tampilan: Membaca lapisan data

Deskripsi: Membaca data dari dataLayer.

Konfigurasi: Kumpulan ekspresi pencocokan kunci, dengan pencocokan kunci dapat berupa rangkaian referensi bertitik di awal, dengan karakter pengganti di akhir. Ekspresi pencocokan kunci mengatur properti mana yang dapat dibaca dari lapisan data.

Diwajibkan oleh: copyFromDataLayer

Signature kueri: queryPermission('read_data_layer', <data layer key to read from>)

Catatan: Mengontrol apakah template kustom dapat membaca dari lapisan data.

Kode contoh

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

Nama tampilan: Membaca himpunan karakter dokumen

Deskripsi: Membaca document.characterSet.

Konfigurasi: Tidak ada

Diwajibkan oleh: readCharacterSet

Signature kueri: queryPermission('read_character_set')

Catatan: Mengatur apakah template kustom dapat membaca document.characterSet.

Kode contoh

const queryPermission = require('queryPermission');
const readCharacterSet = require('readCharacterSet');
if (queryPermission('read_character_set')) {
  const characterSet = readCharacterSet();
}

read_container_data

Nama tampilan: Membaca data penampung

Deskripsi: Membaca data tentang penampung.

Konfigurasi: Tidak ada

Diwajibkan oleh: getContainerVersion

Signature kueri: queryPermission('read_container_data')

Catatan: Mengontrol apakah template kustom dapat membaca data tentang penampung.

Kode contoh

const queryPermission = require('queryPermission');
const getCookieValues = require('getContainerVersion');
let version;
if (queryPermission('read_container_data')) {
  version = getContainerVersion();
}

read_event_metadata

Nama tampilan: Membaca metadata peristiwa

Deskripsi: Membaca metadata peristiwa di Callback Peristiwa

Konfigurasi: Tidak ada

Diwajibkan oleh: addEventCallback

Signature kueri: queryPermission('read_event_metadata')

Catatan: Mengontrol apakah template kustom dapat membaca metadata peristiwa di callback.

Kode contoh

const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
  addEventCallback((containerId, eventMetadata) => {
    // Read event metadata.
  });
}

read_title

Nama tampilan: Membaca judul dokumen

Deskripsi: Membaca document.title.

Konfigurasi: Tidak ada

Diwajibkan oleh: readTitle

Signature kueri: queryPermission('read_title')

Catatan: Mengatur apakah template kustom dapat membaca document.title.

Kode contoh

const queryPermission = require('queryPermission');
const readTitle = require('readTitle');
if (queryPermission('read_title')) {
  const title = readTitle();
}

send_pixel

Nama tampilan: Mengirim piksel

Deskripsi: Mengirim permintaan GET ke URL tertentu. Respons tidak diproses.

Konfigurasi: Daftar pola URL yang diizinkan.

Diwajibkan oleh: sendPixel

Signature kueri: queryPermission('send_pixel', <url>)

Catatan: Mengatur apakah template kustom dapat mengirim permintaan GET atau tidak, dan dari lokasi mana template kustom dapat melakukannya.

Kode contoh

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

Nama tampilan: Menetapkan cookie

Deskripsi: Menetapkan cookie dengan nama dan parameter yang ditentukan.

Konfigurasi: Tabel nama cookie yang diizinkan, masing-masing dengan pembatasan opsional pada nama, domain, jalur, atribut secure, dan masa berlaku.

Diwajibkan oleh: setCookie

Signature kueri: queryPermission('set_cookies', <name>, <options>)

Catatan: Mengatur apakah cookie dapat ditulis, bergantung pada nama cookie, domain, jalur, atribut secure, dan masa berlaku.

Kode contoh

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

Nama tampilan: Menulis lapisan data

Deskripsi: Menulis data ke dataLayer.

Konfigurasi: Kumpulan ekspresi pencocokan kunci, dengan pencocokan kunci dapat berupa rangkaian referensi bertitik di awal, dengan karakter pengganti di akhir. Ekspresi pencocokan kunci mengatur properti mana yang dapat menulis ke lapisan data.

Diwajibkan oleh: gtagSet

Signature kueri: queryPermission('write_data_layer', <data layer key to write from>)

Catatan: Mengontrol apakah template kustom dapat menulis ke lapisan data.

Kode contoh

const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
  gtagSet({dlKey: 'baz'});
}