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

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


हर अनुमति:

  • जिन एपीआई के लिए ज़रूरी है उनकी जांच की जाती है.
  • सैंडबॉक्स किए गए 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

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

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

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

डिसप्ले नेम: पिक्सल भेजता है

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

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

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

डिसप्ले नेम: यह कुकी सेट करता है

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

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