कस्टम टेंप्लेट की अनुमतियां

इस दस्तावेज़ में, वेब कस्टम टेंप्लेट के लिए अनुमतियों के बारे में बताया गया है.


हर अनुमति:

  • इनकी जांच उन एपीआई के ज़रिए की जाती है जिनके लिए इनकी ज़रूरत होती है.
  • सैंडबॉक्स किए गए JavaScript में, इस्तेमाल किए गए एपीआई के आधार पर इसका अपने-आप पता चल जाता है. ऐसा तब होता है, जब कस्टम टेंप्लेट एडिटर में बदलाव किए जाते हैं (तेज़ी से सुझाव/राय पाने के लिए). साथ ही, जब कोड कंपाइल किया जाता है, ताकि यह पुष्टि की जा सके कि सही अनुमतियां लागू की गई हैं.
  • कस्टम टेंप्लेट एडिटर में बदलाव किया जा सकता है, ताकि अनुमति को ज़्यादा सटीक बनाया जा सके.
  • queryPermission API के ज़रिए, सैंडबॉक्स किए गए JavaScript में क्वेरी की जा सकती है.

access_globals

दिखने वाला नाम: ग्लोबल वैरिएबल को ऐक्सेस करता है

ब्यौरा: इससे ग्लोबल वैरिएबल को ऐक्सेस करने की अनुमति मिलती है. इसमें संवेदनशील एपीआई भी शामिल हो सकते हैं.

कॉन्फ़िगरेशन: ऐक्सेस की जा सकने वाली कुंजियों की सूची. हर कुंजी, डॉट से अलग किया गया पाथ होता है. उदाहरण के लिए: foo.bar हर पाथ का पहला टोकन, ब्राउज़र के ग्लोबल स्कोप में पहले से तय की गई कुंजी या JavaScript कीवर्ड नहीं होना चाहिए. इसमें पढ़ने, लिखने, और एक्ज़ीक्यूट करने के चेकबॉक्स होते हैं, जिनसे ऐक्सेस को कंट्रोल किया जाता है.

इनके लिए ज़रूरी है: 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);
}

get_cookies

डिसप्ले नेम: कुकी की वैल्यू पढ़ने की अनुमति

ब्यौरा: यह अनुमति मिलने पर, चुनिंदा नाम के साथ कुकी की वैल्यू को पढ़ा जा सकता है.

कॉन्फ़िगरेशन: उन कुकी के नामों की सूची जिन्हें पढ़ने की अनुमति है.

इसके लिए ज़रूरी है: 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

डिसप्ले नेम: रेफ़र करने वाले का यूआरएल पढ़ता है

ब्यौरा: इससे रेफ़रर के कुछ हिस्सों को पढ़ने की अनुमति मिलती है.

कॉन्फ़िगरेशन: यहां दिए गए बूलियन, यह तय करते हैं कि रेफ़रर के किस हिस्से को पढ़ा जा सकता है. रेफ़रर के किसी हिस्से को सिर्फ़ तब पढ़ा जा सकता है, जब उससे जुड़ा हिस्सा true हो. अगर ये सभी बूलियन true पर सेट हैं, तो कॉलर getReferrerUrl को कॉल कर सकता है. इसके लिए, उसे किसी कॉम्पोनेंट को तय करने की ज़रूरत नहीं होगी. इससे उसे पूरा रेफ़रर यूआरएल मिल जाएगा. अगर कोई वैल्यू सेट नहीं की गई है, तो डिफ़ॉल्ट वैल्यू 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

डिसप्ले नेम: यूआरएल पढ़ें

जानकारी: मौजूदा पेज का हिस्सा या पूरा यूआरएल दिखाता है.

कॉन्फ़िगरेशन: यहां दिए गए बूलियन, यह तय करते हैं कि यूआरएल के किस हिस्से को पढ़ा जा सकता है. यूआरएल के किसी हिस्से को सिर्फ़ तब पढ़ा जा सकता है, जब उससे जुड़ा हिस्सा सही हो. अगर ये सभी बूलियन true पर सेट हैं, तो कॉलर बिना किसी कॉम्पोनेंट के getUrl को कॉल कर सकता है. ऐसा करने पर, उसे पूरा यूआरएल मिलेगा. अगर कोई वैल्यू सेट नहीं की गई है, तो डिफ़ॉल्ट वैल्यू all होती है. अगर कोई वैल्यू सेट की जाती है, तो वैल्यू कॉम्पोनेंट का एक कलेक्शन होना चाहिए. कॉम्पोनेंट इनमें से कोई एक होना चाहिए: protocol, host, port, path, query, extension या fragment.

queryKeys: अगर क्वेरी को चुना जाता है, तो टेंप्लेट का लेखक, क्वेरी कुंजियों के उस सेट को और सीमित कर सकता है जिसे वह पढ़ सकता है. यह कुंजियों का एक सामान्य कलेक्शन है, जिसमें कोई वाइल्डकार्ड नहीं है.

इसके लिए ज़रूरी है: getUrl

क्वेरी का सिग्नेचर: queryPermission('get_url', <optional url component>, <optional query key>)

अगर यूआरएल कॉम्पोनेंट दिया गया है, तो वह 'protocol', 'host', 'port', 'path', 'query', 'extension', 'fragment' में से कोई एक होना चाहिए. अगर इसे शामिल नहीं किया जाता है, तो अनुमति से जुड़ी क्वेरी, पूरे यूआरएल को ऐक्सेस करने का अनुरोध होती है.

अगर क्वेरी कुंजी दी गई है, तो यह क्वेरी स्ट्रिंग का वह आर्ग्युमेंट होना चाहिए जिसे टेंप्लेट कोड को पढ़ना है.

ध्यान दें: इससे यह कंट्रोल किया जाता है कि कस्टम टेंप्लेट, मौजूदा जगह की जानकारी को पढ़ सकता है या नहीं. इससे जगह की जानकारी के किसी खास हिस्से को सीमित किया जा सकता है.

कोड का उदाहरण

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 को किसी वेबपेज में एम्बेड किया जा सकता है.

कॉन्फ़िगरेशन: यूआरएल पैटर्न की सूची

इसके लिए ज़रूरी है: 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

डिसप्ले नेम: स्क्रिप्ट इंजेक्ट करता है

ब्यौरा: पेज में कोई स्क्रिप्ट इंजेक्ट करता है.

कॉन्फ़िगरेशन: यूआरएल पैटर्न की सूची

इसके लिए ज़रूरी है: injectScript

क्वेरी का सिग्नेचर: queryPermission('inject_script', <url>)

ध्यान दें: इससे यह तय होता है कि कस्टम टेंप्लेट, JavaScript को इंजेक्ट कर सकता है या नहीं. साथ ही, यह भी तय होता है कि वह किस ऑरिजिन से ऐसा कर सकता है.

कोड का उदाहरण

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_analytics_storage

डिसप्ले नेम: Analytics स्टोरेज में मौजूद जानकारी पढ़ता है

ब्यौरा: इससे टेंप्लेट, सेव किए गए Analytics डेटा को पढ़ सकते हैं. जैसे, क्लाइंट आईडी.

कॉन्फ़िगरेशन: कोई नहीं

इसके लिए ज़रूरी है: readAnalyticsStorage

क्वेरी का सिग्नेचर: queryPermission('read_analytics_storage')

ध्यान दें: इससे यह तय होता है कि कस्टम टेंप्लेट, Analytics स्टोरेज से डेटा पढ़ सकता है या नहीं.

कोड का उदाहरण

const queryPermission = require('queryPermission');
const readAnalyticsStorage = require('readAnalyticsStorage');
if (queryPermission('read_analytics_storage')) {
  const value = readAnalyticsStorage();
}

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

दिखने वाला नाम: यह कुकी, इवेंट का मेटाडेटा पढ़ती है

ब्यौरा: यह कुकी, इवेंट कॉलबैक में इवेंट मेटाडेटा को पढ़ती है

कॉन्फ़िगरेशन: कोई नहीं

इसके लिए ज़रूरी है: 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

डिसप्ले नेम: पिक्सल के इस्तेमाल की अनुमति

ब्यौरा: यह अनुमति मिलने पर, दिए गए किसी यूआरएल पर जीईटी अनुरोध भेजा जा सकता है. जवाब को प्रोसेस नहीं किया गया है.

कॉन्फ़िगरेशन: अनुमति वाले यूआरएल पैटर्न की सूची.

इसके लिए ज़रूरी है: 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);
}

set_cookies

Display name: यह कुकी सेट करता है

ब्यौरा: यह कुकी, बताए गए नाम और पैरामीटर के साथ एक कुकी सेट करती है.

कॉन्फ़िगरेशन: मंज़ूरी वाली कुकी के नामों की टेबल. हर कुकी के लिए, नाम, डोमेन, पाथ, 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'});
}