این سند مجوزهای قالب های سفارشی سمت سرور را مشخص می کند.
هر مجوز عبارت است از:
- توسط APIهایی که به آنها نیاز دارند بررسی شده است.
- به طور خودکار در جاوا اسکریپت جعبه شنی، بر اساس API هایی که استفاده می شود، شناسایی می شود. این زمانی اتفاق میافتد که ویرایشها در ویرایشگر قالب سفارشی (برای یک حلقه بازخورد سریع)، و زمانی که کد کامپایل میشود (برای تأیید اینکه مجوزهای صحیح اعمال شدهاند) انجام میشود.
- قابل ویرایش در ویرایشگر قالب سفارشی، برای مشخص کردن مجوز.
- از طریق
queryPermission
API در جاوا اسکریپت sandboxed قابل استعلام است.
access_bigquery
نام نمایشی: به BigQuery دسترسی دارد
توضیحات: اجازه دسترسی به BigQuery در Google Cloud Platform را میدهد.
پیکربندی: گزینه ای برای اجازه دادن به پروژه مشخص شده، مجموعه داده و ترکیبات جدول برای استفاده با BigQuery. تنظیم یک پیکربندی شناسه پروژه برای GOOGLE_CLOUD_PROJECT
امکان استفاده از متغیر محیطی GOOGLE_CLOUD_PROJECT
را به عنوان شناسه پروژه در زمانی که projectId
از BigQuery API parameter
حذف میشود، فراهم میکند.
مورد نیاز: BigQuery
امضای درخواست: queryPermission('access_bigquery', <operation>, <options>)
نکته: <operation>
یک رشته است و می تواند مقادیر زیر را داشته باشد:
- نوشتن
<options>
یک شی حاوی موارد زیر است:
{
'projectId': <project_id>,
'datasetId': <dataset_id>,
'tableId': <table_id>
}
کد نمونه
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
نام نمایشی: به Google Firestore دسترسی دارد
توضیحات: اجازه دسترسی به Google Firestore را می دهد.
پیکربندی: گزینه ای برای اجازه دادن به ترکیبات پروژه و مسیر مشخص شده (پشتیبانی از نحو عام) برای استفاده با Firestore. تنظیم پیکربندی شناسه پروژه برای GOOGLE_CLOUD_PROJECT
امکان استفاده از متغیر محیطی GOOGLE_CLOUD_PROJECT
را به عنوان شناسه پروژه در زمانی که projectId
از Firestore API parameter
حذف میشود، فراهم میکند.
مورد نیاز: Firestore
امضای درخواست: queryPermission('access_firestore', <operation>, <options>)
نکته: <operation>
یک رشته است و می تواند مقادیر زیر را داشته باشد:
- خواندن - به API های خواندن و پرس و جو دسترسی می دهد
- نوشتن - اجازه دسترسی به نوشتن API را می دهد
- read_write - به API های خواندن، نوشتن و پرس و جو دسترسی می دهد
<options>
یک شی حاوی موارد زیر است:
{
'projectId': <project_id>,
'path': <path>
}
کد نمونه
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);
}
access_response
نام نمایشی: به پاسخ دسترسی دارد
توضیحات: به بدنه پاسخ، سرصفحه ها یا وضعیت دسترسی دارد.
پیکربندی: گزینه ای برای اجازه دسترسی به یک یا خاص، با گزینه های فرعی برای کنترل دسترسی به اجزای فرعی مختلف.
مورد نیاز: setPixelResponse
، setResponseBody
، setResponseHeader
، setResponseStatus
امضای درخواست: queryPermission('access_response', 'write', <component>[, <optional component name>])
یادداشت ها: تعیین می کند که آیا می توان به مؤلفه پاسخ HTTP خروجی دسترسی داشت یا خیر.
کد نمونه
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);
}
access_template_storage
نام نمایشی: به ذخیره سازی الگو دسترسی دارد
توضیحات: امکان دسترسی به فضای ذخیرهسازی موقت برای الگوهایی که میتوانند در طول عمر فرآیند سمت سرور باقی بمانند را میدهد.
پیکربندی: هیچ
مورد نیاز: templateDataStorage
امضای درخواست: queryPermission('access_template_storage')
کد نمونه
const queryPermission = require('queryPermission');
const templateDataStorage = require('templateDataStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateDataStorage.getItemCopy(key);
}
دریافت_کوکی ها
نام نمایشی: ارزش(های) کوکی را می خواند
توضیحات: مقادیر کوکی ها را با نام مشخص شده می خواند.
پیکربندی: فهرست نام کوکیهای مجاز برای خواندن.
مورد نیاز: getCookieValues
امضای درخواست: queryPermission('get_cookies', <name>)
یادداشت ها: بسته به نام کوکی، تعیین می کند که آیا می توان یک کوکی را خواند.
کد نمونه
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
چوب بری
نام نمایشی: گزارش به کنسول
توضیحات: به کنسول برنامهنویس و حالت پیشنمایش Tag Manager وارد میشود.
پیکربندی: گزینه ای برای فعال کردن ورود به سیستم در تولید. به طور پیش فرض فقط ورود به سیستم در اشکال زدایی/پیش نمایش را فعال می کند. اگر مجوز رد شود، logToConsole
خطایی ایجاد نمی کند، اما پیام گزارش را سرکوب می کند.
مورد نیاز: logToConsole
امضای درخواست: queryPermission('logging')
یادداشت ها: کنترل می کند که آیا یک الگوی سفارشی می تواند به کنسول توسعه دهنده وارد شود یا خیر.
کد نمونه
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');
use_message
نمایش نام: از پیام ها استفاده می کند
توضیحات: با استفاده از addMessageListener
یا sendMessage
API ها را ارسال یا دریافت می کند.
پیکربندی: گزینه ای برای تعیین نوع پیام و اینکه آیا الگو می تواند گوش دهد، ارسال کند یا هر دو.
مورد نیاز: addMessageListener
، sendMessage
امضای درخواست: queryPermission('use_message', <usage>, <message type>)
یادداشت ها: استفاده می تواند یکی از listen
، send
یا listen_and_send
باشد.
کد نمونه
const queryPermission = require('queryPermission');
const sendMessage = require('sendMessage');
if (queryPermission('use_message', 'send', 'set_cookie')) {
sendMessage('set_cookie', {name: 'foo', value: 'bar'});
}
read_container_data
نام نمایشی: داده های کانتینر را می خواند
توضیحات: داده های مربوط به ظرف را می خواند.
پیکربندی: هیچ.
مورد نیاز: getClientName
، getContainerVersion
امضای درخواست: queryPermission('read_container_data')
یادداشت ها: کنترل می کند که آیا یک الگوی سفارشی می تواند داده های ظرف را بخواند یا خیر.
کد نمونه
const getContainerVersion = require('getContainerVersion');
const queryPermission = require('queryPermission');
if (queryPermission('read_container_data')) {
return getContainerVersion();
}
خواندن_رویداد_داده
نام نمایشی: داده های رویداد را می خواند
توضیحات: داده های رویداد را می خواند.
پیکربندی: گزینه ای برای اجازه دادن به هر گونه دسترسی یا دسترسی خاص که توسط لیستی از مسیرهای کلیدی مجاز کنترل می شود (قالب دستوری پشتیبانی می شود).
مورد نیاز: getAllEventData
، getEventData
امضای درخواست: queryPermission('read_event_data'[, <optional key>])
یادداشتها: کنترل میکند که آیا یک الگوی سفارشی میتواند دادههای رویداد را در یک مسیر کلیدی معین بخواند (یا همه دادههای رویداد، اگر مسیر کلیدی داده نشده باشد).
کد نمونه
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);
}
read_event_metadata
نام نمایشی: فراداده رویداد را می خواند
توضیحات: فراداده رویداد را در رویداد Callbacks می خواند
پیکربندی: هیچ
مورد نیاز توسط: addEventCallback
امضای درخواست: queryPermission('read_event_metadata')
یادداشتها: کنترل میکند که آیا یک الگوی سفارشی میتواند فراداده رویداد را در فراخوانها بخواند یا خیر.
کد نمونه
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
read_request
نام نمایشی: درخواست HTTP را می خواند
توضیحات: سرصفحه های درخواست، پارامترهای پرس و جو، بدنه، مسیر یا آدرس IP راه دور را می خواند.
پیکربندی: گزینه ای برای اجازه دسترسی به یک یا خاص، با گزینه های فرعی برای کنترل دسترسی به اجزای فرعی مختلف.
مورد نیاز: extractEventsFromMpv1
, extractEventsFromMpv2
, getRemoteAddress
, getRequestBody
, getRequestHeader
, getRequestPath
, getRequestQueryParameter
, getRequestQueryParameters
, getRequestQueryString
امضای درخواست: queryPermission('read_request', <component>[, <optional component name>])
یادداشت ها: تعیین می کند که آیا می توان به مؤلفه پاسخ HTTP ورودی دسترسی داشت یا خیر.
کد نمونه
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') { ... }
بازگشت_پاسخ
نام نمایشی: پاسخ را برمیگرداند
توضیحات: پاسخ را به تماس گیرنده برمی گرداند.
پیکربندی: هیچ
مورد نیاز: returnResponse
امضای درخواست: queryPermission('return_response')
نکات: این مجوز هیچ فیلدی برای محدود کردن ندارد و معمولاً برای آن درخواست نمی شود.
run_container
نمایش نام: کانتینر را اجرا می کند
توضیحات: کانتینر را با یک رویداد اجرا می کند
پیکربندی: هیچ
مورد نیاز: runContainer
امضای درخواست: queryPermission('run_container')
نکات: این مجوز هیچ فیلدی برای محدود کردن ندارد و معمولاً برای آن درخواست نمی شود.
send_http
نام نمایشی: درخواست های HTTP را ارسال می کند
توضیحات: یک درخواست HTTP را به یک URL مشخص ارسال می کند.
مورد نیاز: getGoogleScript
, sendEventToGoogleAnalytics
, sendHttpGet
, sendHttpRequest
امضای درخواست: queryPermission('send_http', <url>)
یادداشت ها: بسته به URL، تعیین می کند که آیا می توان درخواست HTTP کرد یا خیر. برای اطمینان از اتصال ایمن، فقط URL های امن (HTTPS) مجاز هستند.
کد نمونه
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
نام نمایشی: پیکسل ها را از مرورگرها ارسال می کند
توضیحات: درخواست GET را از مرورگر به URL مشخصی ارسال می کند.
مورد نیاز: sendPixelFromBrowser
امضای درخواست: queryPermission('send_pixel_from_browser', <url>)
یادداشت ها: بسته به URL، تعیین می کند که آیا درخواستی می تواند از مرورگر ارسال شود یا خیر.
کد نمونه
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);
}
مجموعه_کوکی ها
نام نمایشی: یک کوکی تنظیم می کند
توضیحات: یک کوکی با نام و پارامترهای مشخص شده تنظیم می کند.
پیکربندی: جدولی از نامهای مجاز کوکی، که هر کدام دارای محدودیتهای اختیاری در نام، دامنه، مسیر، ویژگی secure
و انقضا هستند.
مورد نیاز: setCookie
امضای درخواست: queryPermission('set_cookies', <name>, <options>)
یادداشتها: بسته به نام کوکی، دامنه، مسیر، ویژگی secure
و انقضا، تعیین میکند که آیا یک سرصفحه «Set-Cookie» میتواند به پاسخ اضافه شود.
کد نمونه
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);
}
use_custom_private_keys
نام نمایشی: از کلیدهای خصوصی سفارشی استفاده می کند
توضیحات: از کلیدهای خصوصی یک فایل کلید JSON برای عملیات رمزنگاری استفاده می کند.
پیکربندی: لیستی از شناسه های کلید مجاز. شناسه ها باید با کلیدهای موجود در فایل کلید JSON که توسط متغیر محیطی SGTM_CREDENTIALS
در سرور ارجاع شده است مطابقت داشته باشند.
مورد نیاز: hmacSha256
امضای درخواست: queryPermission('use_custom_private_keys', <key id>)
یادداشت ها: فهرست کلیدهای خصوصی مجاز را کنترل می کند.
کد نمونه
const hmacSha256= require('hmacSha256');
const queryPermission = require('queryPermission');
const keyId = 'key1';
let result;
if (queryPermission('use_custom_private_keys', keyId)) {
result = hmacSha256('my_data', keyId);
}
use_google_credentials
نام نمایشی: از اعتبار پیش فرض برنامه Google استفاده می کند
توضیحات: از اعتبارنامه های پیش فرض Google برای برقراری تماس با API های Google استفاده می کند.
پیکربندی: فهرستی از محدوده های مجاز Google OAuth 2.0 .
مورد نیاز: getGoogleAuth
امضای درخواست: queryPermission('use_google_credentials', <scopes>)
نکات: محدوده های مجاز Google OAuth 2.0 را برای استفاده با API های Google محدود می کند.
کد نمونه
const getGoogleAuth = require('getGoogleAuth');
const queryPermission = require('queryPermission');
const scopes = [
'https://www.googleapis.com/auth/datastore'
];
let auth;
if (queryPermission('use_google_credentials', scopes)) {
auth = getGoogleAuth(scopes);
}