הרשאות לשימוש בתבניות מותאמות אישית

במסמך הזה מתוארות ההרשאות לתבניות בהתאמה אישית לאינטרנט.


כל הרשאה היא:

  • נבדקים על ידי ממשקי API שדורשים אותם.
  • זיהוי אוטומטי ב-JavaScript שבארגז חול (sandbox), על סמך ממשקי ה-API שבהם נעשה שימוש. הסיבה לכך היא שהעריכות מתבצעות בכלי לעריכת תבניות בהתאמה אישית (כדי ליצור לולאת משוב מהירה) וכשהקוד מורכב (כדי לוודא שנאכפים את ההרשאות הנכונות).
  • ניתן לערוך את ההרשאה באמצעות עורך תבניות בהתאמה אישית כדי לקבל הרשאה ספציפית יותר.
  • אפשר לשלוח שאילתות ב-JavaScript בארגז חול באמצעות ה-API של queryPermission.

access_globals

שם לתצוגה: יש גישה למשתנים גלובליים

תיאור: הרשאה שמאפשרת גישה למשתנה גלובלי (שעשוי לכלול ממשקי API רגישים).

Configuration: רשימת המפתחות שאפשר לגשת אליהם. כל מפתח הוא נתיב שמופרד באמצעות נקודה. לדוגמה: 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

שם תצוגה: קריאת הערכים של קובצי ה-Cookie

תיאור: קריאת הערכים של קובצי ה-Cookie עם השם שצוין.

הגדרה: רשימה של שמות קובצי cookie שמותר לקרוא.

חובה על פי: getCookieValues

חתימה של שאילתה: queryPermission('get_cookies', <name>)

הערות: קובעת אם ניתן לקרוא קובץ Cookie, בהתאם לשם שלו.

קוד לדוגמה

const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
  cookieValues = getCookieValues(cookieName);
}

get_referrer

שם מוצג: קריאה של כתובת ה-URL ממקור ההפניה (referrer)

תיאור: מאפשרת גישת קריאה לחלקים מצומצמים של מקור ההפניה (referrer).

הגדרה: הערכים הבוליאניים הבאים קובעים איזה חלק מהגורם מפנה אפשר לקרוא. אפשר לקרוא חלק נתון של המקור שמפנה רק אם החלק התואם הוא true. אם כל המשתנים הבוליאניים האלה מוגדרים ל-true, מבצע הקריאה יכול לקרוא ל-getReferrerUrl בלי לציין רכיב כדי לקבל את כתובת ה-URL המלאה של המפנה. אם לא מוגדר ערך, ערך ברירת המחדל הוא 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 רק אם החלק התואם הוא true. מבצע הקריאה יכול לקרוא ל-getUrl בלי לציין רכיב כדי לקבל את כתובת ה-URL המלאה רק אם כל המשתנים הבוליאניים האלה מוגדרים ל-true. אם לא מוגדר ערך, ערך ברירת המחדל הוא all. אם מוגדר ערך, הערך צריך להיות מערך של רכיבים שבהם הרכיב הוא אחד מהבאים: protocol, host, port, path, query, extension או fragment.

queryKeys: אם בוחרים באפשרות query, מחבר התבנית יכול להגביל עוד יותר את קבוצת מפתחות השאילתות שהוא יכול לקרוא מהם. זהו מערך פשוט של מפתחות, בלי תווים כלליים לחיפוש.

חובה על פי: 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

שם תצוגה: החדרת iframes מוסתרים

תיאור: החדרת 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>)

הערות: קובעות אם תבנית בהתאמה אישית יכולה להחדיר JavaScript, ומאיזה מקור היא יכולה לעשות זאת.

קוד לדוגמה

const queryPermission = require('queryPermission');
const injectScript = require('injectScript');
const url = 'https://www.example.com?api.js';
if (queryPermission('inject_script', url)) {
  injectScript(url);
}

רישום ביומן

שם תצוגה: יומנים למסוף

תיאור: יומנים ל-Developer Console ולמצב התצוגה המקדימה של 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')

הערות: קובעת אם תבנית בהתאמה אישית יכולה לקרוא מטא-נתונים של אירועים בקריאות חזרה (callbacks).

קוד לדוגמה

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);
}

set_cookies

שם תצוגה: מגדיר קובץ Cookie

תיאור: הגדרה של קובץ Cookie עם השם והפרמטרים שצוינו.

הגדרה: טבלה של שמות קובצי cookie מותרים, עם הגבלות אופציונליות על השם, הדומיין, הנתיב, המאפיין secure ותוקף התוקף.

חובה על פי: setCookie

חתימה של שאילתה: queryPermission('set_cookies', <name>, <options>)

הערות: קובע אם ניתן לכתוב קובץ Cookie, בהתאם לשם, לדומיין, לנתיב, למאפיין secure ולתוקף של קובץ ה-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);
}

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'});
}