Sunucu tarafı özel şablon izinleri

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