مجوزهای قالب سفارشی

این سند مجوزهای قالب های سفارشی وب را مشخص می کند.


هر مجوز عبارت است از:

  • توسط 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'});
}