Bu dokümanda, sunucu tarafı özel şablonlar için izinler özetlenmektedir.
Her izin:
- Bunları gerektiren API'ler tarafından kontrol edilir.
- Kullanılan API'lere göre korumalı alana sahip JavaScript'te otomatik olarak algılanır. Bu işlem, özel şablon düzenleyicide düzenleme yapıldığında (hızlı geri bildirim döngüsü için) ve kod derlendiğinde (doğru izinlerin uygulandığından emin olmak için) gerçekleşir.
- İzni daha ayrıntılı hale getirmek için özel şablon düzenleyicide düzenlenebilir.
queryPermission
API'si aracılığıyla korumalı alanlı JavaScript'te sorgulanabilir.
erişim_bigquery
Görünen ad: BigQuery'ye erişir
Açıklama: Google Cloud Platform'da BigQuery'ye erişim izni verir.
Yapılandırma: Belirtilen proje, veri kümesi ve tablo kombinasyonlarının BigQuery ile kullanılmasına izin verme seçeneği. GOOGLE_CLOUD_PROJECT
proje kimliği yapılandırması ayarlamak, projectId
BigQuery API
parameter
öğesinden hariç tutulduğunda proje kimliği olarak GOOGLE_CLOUD_PROJECT
ortam değişkeninin kullanılmasına izin verir.
Zorunluluk: BigQuery
Sorgu imzası:
queryPermission('access_bigquery', <operation>, <options>)
Notlar: <operation>
bir dizedir ve aşağıdaki değerlere sahip olabilir:
- write
<options>
, aşağıdaki öğeleri içeren bir nesnedir:
{
'projectId': <project_id>,
'datasetId': <dataset_id>,
'tableId': <table_id>
}
Örnek kod
const BigQuery = require('BigQuery');
const queryPermission = require('queryPermission');
const connectionInfo = {
'projectId': 'gcp-cloud-project-id',
'datasetId': 'destination-dataset',
'tableId': 'destination-table',
};
if (queryPermission('access_bigquery', 'write', connectionInfo)) {
const rows = [{
'column1': 'String1',
'column2': 1234,
}];
const options = {
'ignoreUnknownValues': true,
'skipInvalidRows': false,
};
BigQuery.insert(connectionInfo, rows, options)
.then(data.gtmOnSuccess, data.gtmOnFailure);
}
access_firestore
Görünen ad: Google Firestore'a erişir
Açıklama: Google Firestore'a erişim izni verir.
Yapılandırma: Belirtilen proje ve yol (joker karakter söz dizimi destekli) kombinasyonlarının Firestore ile kullanılmasına izin verme seçeneği. GOOGLE_CLOUD_PROJECT
için proje kimliği yapılandırması ayarlamak, projectId
Firestore API parameter
'ten hariç tutulduğunda proje kimliği olarak GOOGLE_CLOUD_PROJECT
ortam değişkeninin kullanılmasına izin verir.
Zorunluluk: Firestore
Sorgu imzası:
queryPermission('access_firestore', <operation>, <options>)
Notlar: <operation>
bir dizedir ve aşağıdaki değerlere sahip olabilir:
- okundu: API'leri okuma ve sorgulama erişimi verir
- yazma: API yazma erişimi verir
- okundu_yazma - API'leri okuma, yazma ve sorgulama erişimi verir
<options>
, aşağıdaki öğeleri içeren bir nesnedir:
{
'projectId': <project_id>,
'path': <path>
}
Örnek kod
const Firestore = require('Firestore');
const queryPermission = require('queryPermission');
const options = {
'projectId': 'gcp-cloud-project-id',
'path': 'collection/document',
};
if (queryPermission('access_firestore', 'read', options)) {
Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then(data.gtmOnSuccess, data.gtmOnFailure);
}
erişim_yanıtı
Görünen ad: Yanıtlara erişir
Açıklama: Yanıt gövdesine, üstbilgilerine veya durumuna erişir.
Yapılandırma: Çeşitli alt bileşenlere erişimi kontrol etmek için alt seçeneklerle herhangi bir erişime veya belirli bir erişime izin verme seçeneği.
Zorunluluk: setPixelResponse
, setResponseBody
,
setResponseHeader
, setResponseStatus
Sorgu imzası:
queryPermission('access_response', 'write', <component>[, <optional component name>])
Notlar: Giden HTTP yanıtı bileşenine erişip erişemeyeceğini belirler.
Örnek kod
const queryPermission = require('queryPermission');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
if (queryPermission('access_response', 'write', 'header', 'Content-Type')) {
setResponseHeader('Content-Type', 'text/plain');
}
if (queryPermission('access_response', 'write', 'body')) {
setResponseBody('Not Found');
}
if (queryPermission('access_response', 'write', 'status')) {
setResponseStatus(404);
}
şablon_depolama
Görünen ad: Şablon depolama alanına erişir
Açıklama: Sunucu taraflı işlemin ömrü boyunca kullanılabilecek şablonlar için geçici depolamaya erişim izni verir.
Yapılandırma: Yok
Zorunluluk: templateDataStorage
Sorgu imzası: queryPermission('access_template_storage')
Örnek kod
const queryPermission = require('queryPermission');
const templateDataStorage = require('templateDataStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateDataStorage.getItemCopy(key);
}
get_cookies
Görünen ad: Çerez değerlerini okur
Açıklama: Belirtilen ada sahip çerezlerin değerlerini okur.
Yapılandırma: Okumasına izin verilen çerezlerin adları.
Zorunluluk: getCookieValues
Sorgu imzası: queryPermission('get_cookies', <name>)
Notlar: Adına bağlı olarak bir çerezin okunup okunamayacağını belirler.
Örnek kod
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
logging
Görünen ad: Konsola günlük kayıtları
Açıklama: Geliştirici konsoluna ve Etiket Yöneticisi'nin önizleme moduna giriş yapar.
Yapılandırma: Üretimde oturum açmayı etkinleştirme seçeneği. Varsayılan olarak yalnızca hata ayıklama/önizlemede giriş yapmayı etkinleştirir. İzin reddedilirse logToConsole
hata ayıklamaz ancak günlük mesajını gizler.
Zorunluluk: logToConsole
Sorgu imzası: queryPermission('logging')
Notlar: Özel bir şablonun geliştirici konsoluna giriş yapıp yapamayacağını kontrol eder.
Örnek 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');
mesaj_kullanın
Görünen ad: Mesajları kullanır
Açıklama: addMessageListener
veya sendMessage
API'leri kullanılarak mesaj gönderilir veya alınır.
Yapılandırma: Mesaj türünü ve şablonun dinleyip gönderemeyeceğini, gönderebileceğini veya her ikisini birden yapıp yapamayacağını belirtme seçeneği.
Zorunluluk: addMessageListener
, sendMessage
Sorgu imzası: queryPermission('use_message', <usage>, <message type>)
Not: Kullanım listen
, send
veya listen_and_send
olabilir.
Örnek kod
const queryPermission = require('queryPermission');
const sendMessage = require('sendMessage');
if (queryPermission('use_message', 'send', 'set_cookie')) {
sendMessage('set_cookie', {name: 'foo', value: 'bar'});
}
okundu_kapsayıcı_verileri
Görünen ad: Kapsayıcı verilerini okur
Açıklama: Kapsayıcıyla ilgili verileri okur.
Yapılandırma: Yok.
Zorunluluk: getClientName
, getContainerVersion
Sorgu imzası: queryPermission('read_container_data')
Notlar: Özel bir şablonun kapsayıcı verilerini okuyup okuyamayacağını kontrol eder.
Örnek kod
const getContainerVersion = require('getContainerVersion');
const queryPermission = require('queryPermission');
if (queryPermission('read_container_data')) {
return getContainerVersion();
}
okuma_etkinlik_verileri
Görünen ad: Etkinlik verilerini okur.
Açıklama: Etkinlikteki verileri okur.
Yapılandırma: Herhangi bir erişime veya izin verilen anahtar yolları listesi tarafından kontrol edilen belirli erişime izin verme (joker karakterli söz dizimi)
Zorunluluk: getAllEventData
, getEventData
Sorgu imzası: queryPermission('read_event_data'[, <optional key>])
Notlar: Özel bir şablonun, belirli bir anahtar yolundaki etkinlik verilerini (veya herhangi bir anahtar yolu belirtilmezse tüm etkinlik verilerini) okuyup okuyamayacağını kontrol eder.
Örnek kod
const getAllEventData = require('getAllEventData');
const queryPermission = require('queryPermission');
if (queryPermission('read_event_data')) {
return getAllEventData();
}
const getEventData = require('getEventData');
const queryPermission = require('queryPermission');
const keyPath = 'parentField.childField';
if (queryPermission('read_event_data', keyPath)) {
return getEventData(keyPath);
}
meta veri okuma
Görünen ad: Etkinlik meta verilerini okur
Açıklama: Etkinlik Geri Çağırmalarındaki etkinlik meta verilerini okur
Yapılandırma: Yok
Zorunluluk: addEventCallback
Sorgu imzası: queryPermission('read_event_metadata')
Notlar: Özel bir şablonun geri çağırmalarda etkinlik meta verilerini okuyup okuyamayacağını kontrol eder.
Örnek kod
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
okuma_isteği
Görünen ad: HTTP isteğini okur
Açıklama: İstek başlıklarını, sorgu parametrelerini, gövdeyi, yolu veya uzak IP adresini okur.
Yapılandırma: Çeşitli alt bileşenlere erişimi kontrol etmek için alt seçeneklerle herhangi bir erişime veya belirli bir erişime izin verme seçeneği.
Zorunlu: extractEventsFromMpv1
, extractEventsFromMpv2
,
getRemoteAddress
, getRequestBody
, getRequestHeader
,
getRequestPath
, getRequestQueryParameter
, getRequestQueryParameters
,
getRequestQueryString
Sorgu imzası:
queryPermission('read_request', <component>[, <optional component name>])
Notlar: Gelen HTTP yanıtı bileşenine erişip erişemeyeceğini belirler.
Örnek kod
const queryPermission = require('queryPermission');
const getRequestBody = require('getRequestBody');
const getRequestHeader = require('getRequestHeader');
let body, contentType;
if (queryPermission('read_request', 'body')) {
body = getRequestBody();
}
if (queryPermission('read_request', 'header', 'content-type')) {
contentType = getRequestHeader('content-type');
}
if (body && contentType == 'application/json') { ... }
dönüş_yanıtı
Görünen ad: Yanıt döndürür
Açıklama: Arayana yanıt döndürür.
Yapılandırma: Yok
Zorunluluk: returnResponse
Sorgu imzası: queryPermission('return_response')
Not: Bu izinde daraltılacak alan yoktur ve genellikle sorgulanmaz.
container'ı çalıştır
Görünen ad: Kapsayıcıyı çalıştırır
Açıklama: Kapsayıcıyı bir etkinlikle çalıştırır
Yapılandırma: Yok
Zorunluluk: runContainer
Sorgu imzası: queryPermission('run_container')
Not: Bu izinde daraltılacak alan yoktur ve genellikle sorgulanmaz.
gönder_http
Görünen ad: HTTP istekleri gönderir
Açıklama: Belirtilen bir URL'ye HTTP isteği gönderir.
Zorunluluk: getGoogleScript
, sendEventToGoogleAnalytics
,
sendHttpGet
, sendHttpRequest
Sorgu imzası: queryPermission('send_http', <url>)
Notlar: URL'ye bağlı olarak bir HTTP isteğinin yapılıp yapılamayacağını belirler. Güvenli bir bağlantı sağlamak için yalnızca güvenli (HTTPS) URL'lere izin verilir.
Örnek kod
const queryPermission = require('queryPermission');
const sendHttpGet = require('sendHttpGet');
const url = 'https://example.com/search?query=foo&results=10';
if (queryPermission('send_http', url)) {
sendHttpGet(url);
}
send_pixel_from_browser
Görünen ad: Tarayıcılardan piksel gönderir
Açıklama: Tarayıcıdan belirli bir URL'ye GET isteği gönderir.
Zorunluluk: sendPixelFromBrowser
Sorgu imzası: queryPermission('send_pixel_from_browser', <url>)
Notlar: URL'ye bağlı olarak isteğin tarayıcıdan gönderilip gönderilemeyeceğini belirler.
Örnek kod
const queryPermission = require('queryPermission');
const sendPixelFromBrowser = require('sendPixelFromBrowser');
const url = 'https://example.com/search?query=foo&results=10';
if (queryPermission('send_pixel_from_browser', url)) {
sendPixelFromBrowser(url);
}
çerezleri_ayarlama
Görünen ad: Çerez belirler
Açıklama: Belirtilen ada ve parametrelere sahip bir çerez ayarlar.
Yapılandırma: İzin verilen çerez adlarını içeren ve her biri ad, alan, yol, secure
özelliği ve geçerlilik süresi sonuna ilişkin isteğe bağlı kısıtlamalara sahip bir tablo.
Zorunluluk: setCookie
Sorgu imzası: queryPermission('set_cookies', <name>, <options>)
Notlar: Çerez adı, alan, yol, secure
özelliği ve geçerlilik bitiş tarihine göre belirli bir "Set-Cookie" başlığının yanıta eklenip eklenemeyeceğini belirler.
Örnek 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);
}