chrome.permissions

תאריך הרענון: 2026-09-25 robots: noindex

תיאור

כדי שהמשתמשים יבינו למה נדרשות ההרשאות ויאשרו רק את ההרשאות ההכרחיות, כדאי להשתמש ב-API של chrome.permissions כדי לבקש הרשאות אופציונליות מוצהרות בזמן הריצה ולא בזמן ההתקנה.

סקירה כללית

אזהרות לגבי הרשאות נועדו לתאר את היכולות שניתנות על ידי API, אבל חלק מהאזהרות האלה לא ברורות. ממשק ה-API של ההרשאות מאפשר למפתחים להסביר את אזהרות ההרשאות ולהציג תכונות חדשות בהדרגה, וכך המשתמשים יכולים להכיר את התוסף בלי סיכון. כך המשתמשים יכולים לציין את רמת הגישה שהם מוכנים להעניק ואילו תכונות הם רוצים להפעיל.

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

לחצן של תוסף שמפעיל תכונות נוספות

כדי להציג את האתרים המובילים של המשתמש, צריך את ההרשאה topSites, שמופיעה עם האזהרה הבאה.

אזהרה לגבי התוסף topSites API

הטמעה של הרשאות אופציונליות

שלב 1: מחליטים אילו הרשאות נדרשות ואילו הן אופציונליות

תוסף יכול להצהיר על הרשאות נדרשות והרשאות אופציונליות. באופן כללי, אתם צריכים:

  • משתמשים בהרשאות הנדרשות כשהן נחוצות לפונקציונליות הבסיסית של התוסף.
  • משתמשים בהרשאות אופציונליות כשצריך אותן לתכונות אופציונליות בתוסף.

היתרונות של הרשאות נדרשות:

  • פחות בקשות: תוסף יכול לבקש מהמשתמש פעם אחת לאשר את כל ההרשאות.
  • פיתוח פשוט יותר: מובטח שההרשאות הנדרשות יהיו זמינות.

היתרונות של הרשאות אופציונליות:

  • אבטחה משופרת: ההרשאות של התוספים מצומצמות יותר, כי המשתמשים מפעילים רק את ההרשאות שהם צריכים.
  • מידע טוב יותר למשתמשים: תוסף יכול להסביר למה הוא צריך הרשאה מסוימת כשהמשתמש מפעיל את התכונה הרלוונטית.
  • שדרוגים קלים יותר: כשמשדרגים את התוסף, Chrome לא ישבית אותו למשתמשים אם השדרוג מוסיף הרשאות אופציונליות ולא הרשאות חובה.

שלב 2: הצהרה על הרשאות אופציונליות בקובץ המניפסט

מצהירים על הרשאות אופציונליות במניפסט של התוסף באמצעות המפתח optional_permissions, באותו פורמט כמו השדה permissions:

{
  "name": "My extension",
  ...
  "optional_permissions": ["tabs"],
  "optional_host_permissions": ["https://www.google.com/"],
  ...
}

אם רוצים לבקש מארחים שמתגלים רק בזמן הריצה, צריך לכלול את "https://*/*" בשדה optional_host_permissions של התוסף. כך אפשר לציין כל מקור ב-Permissions.origins כל עוד יש לו סכימה תואמת.

הרשאות שאי אפשר לציין כאופציונליות

אפשר לציין את רוב ההרשאות של תוספים ל-Chrome כאופציונליות, למעט ההרשאות הבאות.

הרשאה תיאור
"debugger" ממשק ה-API‏ chrome.debugger משמש כהעברה חלופית של פרוטוקול ניפוי הבאגים מרחוק של Chrome.
"declarativeNetRequest" מעניקה לתוסף גישה ל-API ‏ chrome.declarativeNetRequest.
"devtools" ההרשאה מאפשרת לתוסף להרחיב את הפונקציונליות של כלי פיתוח ל-Chrome.
"experimental" Canary וDev channel בלבד. ההרשאה מאפשרת לתוסף לגשת לממשקי API של chrome.experimental.
"geolocation" מאפשרת לתוסף להשתמש ב-API של מיקום גיאוגרפי ב-HTML5.
"mdns" מעניקה לתוסף גישה לממשק ה-API של chrome.mdns.
"proxy" מעניקה לתוסף גישה ל-API‏ chrome.proxy כדי לנהל את הגדרות ה-proxy של Chrome.
"tts" ‫API ‏chrome.tts מפעיל המרת טקסט לדיבור (TTS) מסונתז.
"ttsEngine" ‫API‏ chrome.ttsEngine מטמיע מנוע להמרת טקסט לדיבור (TTS) באמצעות תוסף.
"wallpaper" ב-ChromeOS בלבד. משתמשים ב-API‏ chrome.wallpaper כדי לשנות את הטפט של ChromeOS.

מידע נוסף על ההרשאות הזמינות והאזהרות שלהן זמין במאמר הצהרה על הרשאות ואזהרה למשתמשים.

שלב 3: מבקשים הרשאות אופציונליות

מבקשים את ההרשאות מתוך תנועה של המשתמש באמצעות permissions.request():

document.querySelector('#my-button').addEventListener('click', (event) => {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request({
    permissions: ['tabs'],
    origins: ['https://www.google.com/']
  }, (granted) => {
    // The callback argument will be true if the user granted the permissions.
    if (granted) {
      doSomething();
    } else {
      doSomethingElse();
    }
  });
});

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

הנחיה לדוגמה לאישור הרשאה

שלב 4: בדיקת ההרשאות הנוכחיות של התוסף

כדי לבדוק אם לתוסף יש הרשאה ספציפית או קבוצת הרשאות, משתמשים באופרטור permission.contains():

chrome.permissions.contains({
  permissions: ['tabs'],
  origins: ['https://www.google.com/']
}, (result) => {
  if (result) {
    // The extension has the permissions.
  } else {
    // The extension doesn't have the permissions.
  }
});

שלב 5: מסירים את ההרשאות

כבר לא צריך את ההרשאות? כדאי להסיר אותן. אחרי שמסירים הרשאה, קריאה ל-permissions.request() בדרך כלל מוסיפה את ההרשאה בחזרה בלי להציג למשתמש בקשה.

chrome.permissions.remove({
  permissions: ['tabs'],
  origins: ['https://www.google.com/']
}, (removed) => {
  if (removed) {
    // The permissions have been removed.
  } else {
    // The permissions have not been removed (e.g., you tried to remove
    // required permissions).
  }
});

סוגים

Permissions

מאפיינים

  • מקורות

    string[] אופציונלי

    רשימת הרשאות המארח, כולל אלה שצוינו במפתחות optional_permissions או permissions במניפסט, ואלה שמשויכות לסקריפטים של תוכן.

  • permissions

    string[] אופציונלי

    רשימה של הרשאות עם שמות (לא כוללת מארחים או מקורות).

Methods

contains()

Promise
chrome.permissions.contains(
  permissions: Permissions,
  callback?: function,
)
: Promise<boolean>

הפונקציה בודקת אם לתוסף יש את ההרשאות שצוינו.

פרמטרים

  • permissions
  • callback

    פונקציה אופציונלית

    הפרמטר callback נראה כך:

    (result: boolean) => void

    • תוצאה

      בוליאני

      הערך הוא True אם לתוסף יש את ההרשאות שצוינו. אם מקור מסוים מצוין גם כהרשאה אופציונלית וגם כתבנית התאמה של סקריפט תוכן, הפונקציה תחזיר false אלא אם ניתנו שתי ההרשאות.

החזרות

  • Promise<boolean>

    ‫Chrome 96 ואילך

    התמיכה ב-Promises קיימת רק ב-Manifest V3 ואילך. בפלטפורמות אחרות צריך להשתמש ב-callbacks.

getAll()

Promise
chrome.permissions.getAll(
  callback?: function,
)
: Promise<Permissions>

מחזירה את קבוצת ההרשאות הנוכחית של התוסף.

פרמטרים

  • callback

    פונקציה אופציונלית

    הפרמטר callback נראה כך:

    (permissions: Permissions) => void

    • permissions

      ההרשאות הפעילות של התוסף. שימו לב שהמאפיין origins יכיל מקורות שהוענקה להם גישה מתוך אלה שצוינו במפתחות permissions ו-optional_permissions במניפסט, ומתוך אלה שמשויכים לסקריפטים של תוכן.

החזרות

  • Promise<Permissions>

    ‫Chrome 96 ואילך

    התמיכה ב-Promises קיימת רק ב-Manifest V3 ואילך. בפלטפורמות אחרות צריך להשתמש ב-callbacks.

remove()

Promise
chrome.permissions.remove(
  permissions: Permissions,
  callback?: function,
)
: Promise<boolean>

הסרת הגישה להרשאות שצוינו. אם יש בעיות בהסרת ההרשאות, ההבטחה תידחה.

פרמטרים

  • permissions
  • callback

    פונקציה אופציונלית

    הפרמטר callback נראה כך:

    (removed: boolean) => void

    • הוסר

      בוליאני

      הערך הוא True אם ההרשאות הוסרו.

החזרות

  • Promise<boolean>

    ‫Chrome 96 ואילך

    התמיכה ב-Promises קיימת רק ב-Manifest V3 ואילך. בפלטפורמות אחרות צריך להשתמש ב-callbacks.

request()

Promise
chrome.permissions.request(
  permissions: Permissions,
  callback?: function,
)
: Promise<boolean>

הפונקציה מבקשת גישה להרשאות שצוינו, ומציגה למשתמש בקשה אם יש צורך בכך. ההרשאות האלה צריכות להיות מוגדרות בשדה optional_permissions של המניפסט או להיות הרשאות נדרשות שהמשתמש לא אישר. המערכת תתעלם מנתיבים בתבניות של מקורות. אפשר לבקש קבוצות משנה של הרשאות אופציונליות למקור; לדוגמה, אם מציינים *://*\/* בקטע optional_permissions של קובץ המניפסט, אפשר לבקש http://example.com/. אם יש בעיות בבקשת ההרשאות, ההבטחה תידחה.

פרמטרים

  • permissions
  • callback

    פונקציה אופציונלית

    הפרמטר callback נראה כך:

    (granted: boolean) => void

    • GRANTED

      בוליאני

      הערך הוא True אם המשתמש העניק את ההרשאות שצוינו.

החזרות

  • Promise<boolean>

    ‫Chrome 96 ואילך

    התמיכה ב-Promises קיימת רק ב-Manifest V3 ואילך. בפלטפורמות אחרות צריך להשתמש ב-callbacks.

אירועים

onAdded

chrome.permissions.onAdded.addListener(
  callback: function,
)

האירוע מופעל כשהתוסף מקבל הרשאות חדשות.

פרמטרים

  • callback

    פונקציה

    הפרמטר callback נראה כך:

    (permissions: Permissions) => void

onRemoved

chrome.permissions.onRemoved.addListener(
  callback: function,
)

מופעל כשמסירים מהתוסף את הגישה להרשאות.

פרמטרים

  • callback

    פונקציה

    הפרמטר callback נראה כך:

    (permissions: Permissions) => void