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