این سند مجوزهای قالب های سفارشی وب را مشخص می کند.
هر مجوز عبارت است از:
- توسط APIهایی که به آنها نیاز دارند بررسی شده است.
- به طور خودکار در جاوا اسکریپت جعبه شنی، بر اساس API هایی که استفاده می شود، شناسایی می شود. این زمانی اتفاق میافتد که ویرایشها در ویرایشگر قالب سفارشی (برای یک حلقه بازخورد سریع)، و زمانی که کد کامپایل میشود (برای تأیید اینکه مجوزهای صحیح اعمال شدهاند) انجام میشود.
- قابل ویرایش در ویرایشگر قالب سفارشی، برای مشخص کردن مجوز.
- از طریق
queryPermission
API در جاوا اسکریپت sandboxed قابل استعلام است.
access_globals
نمایش نام: به متغیرهای سراسری دسترسی دارد
توضیحات: امکان دسترسی به یک متغیر سراسری (به طور بالقوه شامل API های حساس) را می دهد.
پیکربندی: فهرست کلیدهایی که می توان به آنها دسترسی داشت. هر کلید یک مسیر جدا شده از نقطه است. به عنوان مثال: foo.bar
اولین نشانه در هر مسیر نباید یک کلید از پیش تعریف شده در محدوده جهانی مرورگر یا یک کلمه کلیدی جاوا اسکریپت باشد. دارای چک باکس های خواندن، نوشتن و اجرا است که دسترسی را کنترل می کند.
مورد نیاز: setInWindow
, copyFromWindow
, callInWindow
, createQueue
, createArgumentsQueue
امضای پرس و جو: queryPermission('access_globals', 'read', <key to read from>)
یا queryPermission('access_globals', 'write', <key to write to>)
یا queryPermission('access_globals', 'readwrite', <key to read and write>)
یا queryPermission('access_globals', 'execute', <key of function to execute>)
یادداشت ها: کنترل می کند که آیا یک الگوی سفارشی می تواند مقادیر کلی را بخواند و/یا بنویسد.
کد نمونه
const queryPermission = require('queryPermission');
const createQueue = require('createQueue');
if (queryPermission('access_globals', 'readwrite', 'dataLayer')) {
const dataLayerPush = createQueue('dataLayer');
}
access_local_storage
نام نمایشی: به حافظه محلی دسترسی دارد
توضیحات: اجازه دسترسی به کلیدهای مشخص شده در حافظه محلی را می دهد.
پیکربندی: فهرست کلیدهای ذخیره سازی محلی که می توان به آنها دسترسی داشت. این یک آرایه ساده از کلیدها است، بدون علامت. دارای چک باکس های خواندن و نوشتن است که دسترسی را کنترل می کند.
مورد نیاز: localStorage
امضای درخواست: queryPermission('access_local_storage', 'read', <key to read from>)
یا queryPermission('access_local_storage', 'write', <key to write to>)
یا queryPermission('access_local_storage', 'readwrite', <key to read and write>)
کد نمونه
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
نام نمایشی: به فضای ذخیره سازی الگو دسترسی دارد
توضیحات: امکان دسترسی به فضای ذخیرهسازی موقت برای الگوهایی که میتوانند در طول عمر صفحه باقی بمانند را میدهد.
پیکربندی: هیچ
مورد نیاز: templateStorage
امضای درخواست: queryPermission('access_template_storage')
کد نمونه
const queryPermission = require('queryPermission');
const templateStorage = require('templateStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateStorage.getItem(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);
}
get_referrer
نام نمایشی: URL ارجاع دهنده را می خواند
توضیحات: اجازه دسترسی خواندن به بخشهای محدود شده ارجاعدهنده را میدهد.
پیکربندی: بولین های زیر تعیین می کنند که کدام قسمت از ارجاع دهنده قابل خواندن باشد. بخش معینی از ارجاع دهنده تنها در صورتی قابل خواندن است که قسمت مربوطه true
باشد. تماسگیرنده میتواند getReferrerUrl
بدون مؤلفهای فراخوانی کند تا URL ارجاعدهنده کامل را دریافت کند، اگر همه این بولیها روی true
تنظیم شده باشند. اگر مقداری تنظیم نشده باشد، مقدار پیش فرض all
است. اگر مقداری تنظیم شده باشد، مقدار باید آرایه ای از مؤلفه ها باشد که در آن یک مؤلفه یکی از موارد زیر است: protocol
، host
، port
، path
، query
یا extension
.
queryKeys
: اگر پرس و جو انتخاب شده باشد، نویسنده الگو ممکن است مجموعه کلیدهای پرس و جو را که می تواند از آنها بخواند را محدودتر کند. این یک آرایه ساده از کلیدها است، بدون علامت.
مورد نیاز: getReferrerUrl
، getReferrerQueryParameters
امضای درخواست: queryPermission('get_referrer', <url_component>)
کد نمونه
const queryPermission = require('queryPermission');
const getReferrerUrl = require('getReferrerUrl');
let referrer;
if (queryPermission('get_referrer', 'query')) {
referrer = getReferrerUrl('queryParams');
}
get_url
نام نمایشی: URL را می خواند
توضیحات: بخشی یا تمام URL صفحه فعلی را برمی گرداند.
پیکربندی: بولین های زیر تعیین می کنند که کدام قسمت از URL می تواند خوانده شود. یک قسمت مشخص از URL فقط در صورتی قابل خواندن است که قسمت مربوطه درست باشد. تماسگیرنده میتواند getUrl
بدون مؤلفهای که مشخص شده است فراخوانی کند تا کل URL را دریافت کند، اگر و تنها در صورتی که تمام این بولیها روی true
تنظیم شده باشند. اگر مقداری تنظیم نشده باشد، مقدار پیش فرض all
است. اگر مقداری تنظیم شده باشد، مقدار باید آرایه ای از مؤلفه ها باشد که در آن مؤلفه یکی از موارد زیر است: protocol
، host
، port
، path
، query
، extension
یا fragment
.
queryKeys
: اگر پرس و جو انتخاب شده باشد، نویسنده الگو ممکن است مجموعه کلیدهای پرس و جو را که می تواند از آنها بخواند را محدودتر کند. این یک آرایه ساده از کلیدها است، بدون علامت.
مورد نیاز: getUrl
امضای پرس و جو: queryPermission('get_url', <optional url component>, <optional query key>)
در صورت ارائه، مؤلفه URL باید یکی از 'protocol'
، 'host'
، 'port'
، 'path'
، 'query'
، 'extension'
، 'fragment'
باشد. در صورت حذف، درخواست مجوز یک درخواست برای دسترسی به کل URL است.
در صورت ارائه، کلید پرس و جو باید آرگومان رشته کوئری باشد که کد الگو می خواهد بخواند.
یادداشت ها: کنترل می کند که آیا یک الگوی سفارشی می تواند از مکان فعلی بخواند یا خیر. اجازه می دهد تا به بخش خاصی از مکان محدود شود.
کد نمونه
const queryPermission = require('queryPermission');
const getUrl = require('getUrl');
if (queryPermission('get_url', 'query', 'gclid')) {
const gclid = getUrl('query', false, null, 'gclid');
}
inject_hidden_iframe
نام نمایشی: iframe های مخفی را تزریق می کند
توضیحات: یک iframe نامرئی را با URL داده شده تزریق می کند.
پیکربندی: فهرست الگوهای URL
مورد نیاز: injectHiddenIframe
امضای درخواست: queryPermission('inject_hidden_iframe', <url>)
یادداشتها: تعیین میکند که آیا یک الگوی سفارشی میتواند یک iFrame نامرئی را تزریق کند یا خیر، و از کجا میتواند این کار را انجام دهد.
کد نمونه
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
نام نمایشی: اسکریپت ها را تزریق می کند
توضیحات: یک اسکریپت را به صفحه تزریق می کند.
پیکربندی: فهرست الگوهای URL
مورد نیاز: injectScript
امضای درخواست: queryPermission('inject_script', <url>)
یادداشت ها: تعیین می کند که آیا یک الگوی سفارشی می تواند جاوا اسکریپت را تزریق کند یا خیر، و از چه منبعی می تواند این کار را انجام دهد.
کد نمونه
const queryPermission = require('queryPermission');
const injectScript = require('injectScript');
const url = 'https://www.example.com?api.js';
if (queryPermission('inject_script', url)) {
injectScript(url);
}
چوب بری
نام نمایشی: گزارش به کنسول
توضیحات: به کنسول توسعه دهنده و حالت پیش نمایش GTM وارد می شود.
پیکربندی: گزینه ای برای فعال کردن ورود به سیستم در تولید. به طور پیش فرض فقط ورود به سیستم در اشکال زدایی/پیش نمایش را فعال می کند. اگر مجوز رد شود، 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');
read_data_layer
نام نمایشی: لایه داده را می خواند
توضیحات: داده ها را از dataLayer می خواند.
پیکربندی: مجموعه ای از عبارات تطبیق کلیدی، که در آن یک تطبیق کلید می تواند یک سری ارجاعات نقطه چین باشد، با یک علامت عام دنباله دار. عبارات تطبیق کلیدی تعیین می کنند که کدام ویژگی ها می توانند از لایه داده خوانده شوند.
مورد نیاز: copyFromDataLayer
امضای درخواست: queryPermission('read_data_layer', <data layer key to read from>)
نکات: کنترل می کند که آیا یک الگوی سفارشی می تواند از لایه داده بخواند یا خیر.
کد نمونه
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
نام نمایشی: مجموعه کاراکترهای سند را می خواند
توضیحات: document.characterSet
را می خواند.
پیکربندی: هیچ
مورد نیاز: readCharacterSet
امضای درخواست: queryPermission('read_character_set')
یادداشت ها: تعیین می کند که آیا یک الگوی سفارشی می تواند document.characterSet
را بخواند.
کد نمونه
const queryPermission = require('queryPermission');
const readCharacterSet = require('readCharacterSet');
if (queryPermission('read_character_set')) {
const characterSet = readCharacterSet();
}
read_container_data
نام نمایشی: داده های کانتینر را می خواند
توضیحات: داده های مربوط به ظرف را می خواند.
پیکربندی: هیچ
مورد نیاز: getContainerVersion
امضای درخواست: queryPermission('read_container_data')
یادداشت ها: کنترل می کند که آیا یک الگوی سفارشی می تواند داده های مربوط به ظرف را بخواند یا خیر.
کد نمونه
const queryPermission = require('queryPermission');
const getCookieValues = require('getContainerVersion');
let version;
if (queryPermission('read_container_data')) {
version = getContainerVersion();
}
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_title
نام نمایشی: عنوان سند را می خواند
توضیحات: document.title
را می خواند.
پیکربندی: هیچ
مورد نیاز: readTitle
امضای درخواست: queryPermission('read_title')
یادداشت ها: تعیین می کند که آیا یک الگوی سفارشی می تواند document.title
را بخواند.
کد نمونه
const queryPermission = require('queryPermission');
const readTitle = require('readTitle');
if (queryPermission('read_title')) {
const title = readTitle();
}
send_pixel
نام نمایشی: پیکسل ها را ارسال می کند
توضیحات: یک درخواست GET را به یک URL مشخص ارسال می کند. پاسخ پردازش نمی شود.
پیکربندی: فهرست الگوهای URL مجاز.
مورد نیاز: sendPixel
امضای درخواست: queryPermission('send_pixel', <url>)
یادداشتها: تعیین میکند که آیا یک الگوی سفارشی میتواند درخواست GET را ارسال کند و به کدام منبع میتواند این کار را انجام دهد.
کد نمونه
const queryPermission = require('queryPermission');
const sendPixel = require('sendPixel');
const url = 'https://www.example.com?foo=3';
if (queryPermission('send_pixel', url)) {
sendPixel(url);
}
مجموعه_کوکی ها
نام نمایشی: یک کوکی تنظیم می کند
توضیحات: یک کوکی با نام و پارامترهای مشخص شده تنظیم می کند.
پیکربندی: جدولی از نامهای مجاز کوکی، که هر کدام دارای محدودیتهای اختیاری در نام، دامنه، مسیر، ویژگی secure
و انقضا هستند.
مورد نیاز: setCookie
امضای درخواست: queryPermission('set_cookies', <name>, <options>)
یادداشت ها: بسته به نام کوکی، دامنه، مسیر، ویژگی secure
و انقضا، تعیین می کند که آیا یک کوکی می تواند نوشته شود یا خیر.
کد نمونه
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
نمایش نام: لایه داده را می نویسد
توضیحات: داده ها را در dataLayer می نویسد.
پیکربندی: مجموعه ای از عبارات تطبیق کلیدی، که در آن یک تطبیق کلید می تواند یک سری ارجاعات نقطه چین باشد، با یک علامت عام دنباله دار. عبارات تطبیق کلیدی تعیین می کنند که کدام ویژگی ها می توانند در لایه داده بنویسند.
مورد نیاز: gtagSet
امضای درخواست: queryPermission('write_data_layer', <data layer key to write from>)
نکات: کنترل می کند که آیا یک الگوی سفارشی می تواند در لایه داده بنویسد یا خیر.
کد نمونه
const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
gtagSet({dlKey: 'baz'});
}