הרשאות

טיפוס Array
חובה לא
דוגמה
"permissions": [
  "*://developer.mozilla.org/*",
  "webRequest"
]

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

אם תבקשו הרשאות באמצעות מפתח זה, אזי הדפדפן עשוי  לדווח למשתמש/ת בעת ההתקנה שההרבה מבקשת פריבילגיות מסויימות, ולבקש ממנו/ה לאשר כי  ישמח/תשמח להעניק פריבילגיות אלו. הדפדפן עשוי גם להתיר למשתמש/ץ לבדוק פריבילגיות ההרחבה אחרי ההתקנה. כשם שהבקשה להעניק פריבילגיות עשויה להשפיע על נכונות המשתמש/ת להתקין את ההרחבה, בקשת פריבילגיות שווה הפעלה זהירה של שיקול דעת.  לדוגמה, אם תרצו להימנע מלבקש הרשאות לא נחוצות  ותרצו לספק מידע עודות הסיבה לבקשת הרשאות בתיאור המוצר של ההרחבה שלכם. מידע נוסף על העניינים שיש לקחת בחשבון תוכלו למצוא במאמר  Request the right permissions.

למידע נוסף כיצד לבחון ולצפות בבקשת הרשאות ראו Test permission requests  באתר Extension Workshop site.

המפתח יכול להכיל שלושה סוגי הרשאות:

  • הרשאות מארח
  • הרשאות ממשק פיתוח יישומים
  • הרשאות לשונית פעילה

הרשאות מארח

הרשאות מארח מפורטות ב- match patterns, וכל תבנית מזהה קבוצה של כתובות  URLs עבורן ההרחבה מבקשת פריבילגיות נוספות. לדוגמה, בקשת מארח יכולה להיות  "*://developer.mozilla.org/*".

פריבילגיות נוספות כוללות:

  • גישת XMLHttpRequest ו- fetch למקורות ללא  מגבלות בין מקורות (אפילו עבור בקשות שנעשו מתוך תסריטי תוכן)
  • היכולת להחדיר תסריטים על ידי תכנות (באמצעות tabs.executeScript) לתוך דפים המוגשים מתמקורות אלו.
  • היכולת לקבל אירועים מתוך ממשקי הפיתוח של  webRequest עבור מארחים אלה
  • היכולת לקבל עוגיות עבור אותו מארח באמצעות ממשק הפיתוח של  cookies , כל עוד גם הרשאות ממשק הפיתוח "cookies" כלולות.
  • עקיפת ההגנות מפני  מעקב אם המארח הוא שם מתחם מלא בלי ג'וקרים . לא עובד עם <all_urls>.

בפירפוקס, מגירסה 56 ואילך, הרחבות מקבלות אוטומטית הרשאות מארח  עבור המקור של עצמן, שהוא בצורה:

moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/

כש-  60a20a9b-1ad4-af49-9b6c-c64c98c37920 הוא המזהה הפנימי של ההרחבה. ההרחבה יכולה לקבל את ה- URL תכנותית על ידי קריאה ל- extension.getURL():

browser.extension.getURL("");
// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/

הרשאות ממשק פיתוח יישומים

הרשאות ממשק פיתוח היישומים מפורטות כמילות מפתח, וכל מילת מפתח מהווה שם של  WebExtension API שההרחבה מעוניינת להשתמש בו.

כעת זמינות מילות המפתח הבאות:

  • activeTab
  • alarms
  • background
  • bookmarks
  • browserSettings
  • browsingData
  • clipboardRead
  • clipboardWrite
  • contentSettings
  • contextMenus
  • contextualIdentities
  • cookies
  • debugger
  • dns
  • downloads
  • downloads.open
  • find
  • geolocation
  • history
  • identity
  • idle
  • management
  • menus
  • menus.overrideContext
  • nativeMessaging
  • notifications
  • pageCapture
  • pkcs11
  • privacy
  • proxy
  • search
  • sessions
  • storage
  • tabHide
  • tabs
  • theme
  • topSites
  • unlimitedStorage
  • webNavigation
  • webRequest
  • webRequestBlocking

ברוב המקרים ההרשאה רק מעניקה גישה לממשק פיתוח היישומים, עם יוצאי הדופן הבאים:

הרשאת activeTab

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

"תקשורת עם המשתמש" כוללת:

  • כאשר המשתמש/ת מקיש.ה על פעולת הדפדפן או פעולת הדף של ההרחבה
  • כאשר המשתמש/ת בוחר'ת את פריט תפריט ההקשר שלה.
  • the user activates a keyboard shortcut defined by the extension

הפריבילגיות הנוספות הן:

  • היכולת להחדיר JavaScript או CSS באמצעות תכנות לתוך הלשונית באמצעות,  browser.tabs.executeScript ו-browser.tabs.insertCSS
  • גישה לחלקים הפריבילגיים של ממשק פיתוח הלשונית עבור הלשונית הנוכחית: Tab.url, Tab.title, ו-Tab.faviconUrl.

הכוונה בהרשאה זו היא לאפשר להרחבות להגשים מקרה שימוש נפוץ, ללא הצורך לתת להן הרשאות בעלות כוח רב מדי. הרשאות רבוטת יהיו מעונינות "לעשות משהו לדף הנוכחי כאשר המשתמש/ת מבקש/ת". לדוגמה, קחו בחשבון הרחבה המבקשת להריץ תסריט בדף הנוכחי כאשר המשתמש/ת מקישה על פעולת דפדפן. אם ההרשאה  activeTab לא הייתה קיימת, ההרחבה הייתה צריכה לבקש את ההרשאת המארח   <all_urls>. אבל זה נותן להרחבה יותר כוח ממה שדרוש לה:  היא הייתה יכולה כעת לבצע תסריטים בכל לשונית, בכל עת שתרצה, במקום רק בלשונית הפעילה ורק בתגובה לפעולת משתמש/ת.

שימו לב כי תוכלו לקבל גישה רק ללשונית/מידע שכבר שם, כאשר ההתקשרות מצד המשתמש/ת התקיימה (למשל. ההקשה). כאשר הלשונית הפעילה מנווטת למקום אחר, למשל עקב סיום טעינה או אירוע אחר כלשהו, ההרשאה אינה מעניקה לך יותר גישה ללשונית.

בדרך כלל הלשונית המקבלת את הרשאת activeTab היא רק הלשונית הפעילה באותו רגע, פרט למקרה אחד. ממשק היישומים menus מאפשר להרחבה ליצור פריט תפריט המוצג כאשר המשתמש/ת מקיש/ה הקשת הקשר בלשונית  (כלומר, על הרכיב בפס הלשוניות המשאפשר למשתמש/ת לעבור מלשונית ללשונית). אם המשתמש/ת מקיש/ה על פריט כזה, אזי הרשאת  activeTab מוענקת ללשונית שהוקש עליה, אף אם זו אינה הלשונית הפעילה (נכון לפיירפוקס 63, bug 1446956).

גישה ללוח הגזירים

קיימות שתי הרשאות המאפשרות להרחבה  לתקשר עם לוח הגזירים:

ראו Interact with the clipboard לכל הפרטים אודות הדבר.

אחסון ללא הגבלה

הרשאת unlimitedStorage:

  • מאפשרת להרחבה לחרוג מכל מכסה הנאכפת על ידי ממשק היישומים  storage.local
  • בפיירפוקס, מאפשרת להרחבה ליצור  "persistent" IndexedDB database, מבלי שהדפדפן יעצור לקבלת הרשאות מהמשתמ/ת בעת יצירת בסיב הנתונים.

דוגמה

 "permissions": ["*://developer.mozilla.org/*"]

לבקשת הרשאה בעלת פריבילגיה  לדפים תחת developer.mozilla.org.

  "permissions": ["tabs"]

לבקשת גישה לחלקים בעלי פריבילגיה של ממשק הפיתוח  tabs.

  "permissions": ["*://developer.mozilla.org/*", "tabs"]

לבקשת שתי ההרשאות שלעיל.

תאימות דפדפנים

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxOperaSafariFirefox for Android
permissionsChrome Full support YesEdge Full support 14Firefox Full support 48Opera Full support YesSafari Full support 14Firefox Android Full support 48
activeTabChrome Full support YesEdge Full support 79Firefox Full support 48Opera Full support YesSafari Full support 14Firefox Android Full support 48
alarmsChrome Full support YesEdge Full support 79Firefox Full support 48Opera Full support YesSafari Full support 14Firefox Android Full support 48
backgroundChrome Full support 10Edge Full support 79Firefox No support NoOpera No support NoSafari No support NoFirefox Android No support No
bookmarksChrome Full support YesEdge Full support 15Firefox Full support 48Opera Full support YesSafari No support NoFirefox Android No support No
browserSettingsChrome No support NoEdge No support NoFirefox Full support 56Opera No support NoSafari No support NoFirefox Android Full support 56
browsingDataChrome Full support YesEdge Full support 79Firefox Full support 53Opera Full support YesSafari No support NoFirefox Android Full support 56
captivePortalChrome No support NoEdge No support NoFirefox Full support 68Opera No support NoSafari No support NoFirefox Android No support No
clipboardReadChrome Full support YesEdge Full support 79Firefox Full support 54Opera Full support YesSafari No support NoFirefox Android Full support 54
clipboardWriteChrome Full support YesEdge Full support 79Firefox Full support 51Opera Full support YesSafari Full support 14Firefox Android Full support 51
contentSettingsChrome Full support YesEdge Full support 79Firefox No support NoOpera Full support YesSafari No support NoFirefox Android No support No
contextMenusChrome Full support YesEdge Full support 14Firefox Full support 55
Notes
Full support 55
Notes
Notes Available as an alias to the menus permission.
Opera Full support YesSafari Full support 14
Notes
Full support 14
Notes
Notes Available as an alias to the menus permission.
Firefox Android No support No
contextualIdentitiesChrome No support NoEdge No support NoFirefox Full support 53Opera No support NoSafari No support NoFirefox Android Full support 53
cookiesChrome Full support YesEdge Full support 14Firefox Full support 48Opera Full support YesSafari Full support 14Firefox Android Full support 48
debuggerChrome Full support YesEdge Full support 79Firefox No support NoOpera Full support YesSafari No support NoFirefox Android No support No
dnsChrome No support NoEdge No support NoFirefox Full support 60Opera No support NoSafari No support NoFirefox Android Full support 60
downloadsChrome Full support YesEdge Full support 79Firefox Full support 48Opera Full support YesSafari No support NoFirefox Android Full support 48
downloads.openChrome Full support YesEdge Full support 79Firefox Full support 48Opera Full support YesSafari No support NoFirefox Android Full support 48
findChrome No support NoEdge No support NoFirefox Full support 57Opera No support NoSafari No support NoFirefox Android No support No
geolocationChrome Full support YesEdge Full support 14Firefox Full support 54Opera Full support YesSafari No support NoFirefox Android Full support 54
historyChrome Full support YesEdge Full support 79Firefox Full support 49Opera Full support YesSafari No support NoFirefox Android No support No
identityChrome Full support YesEdge Full support 79Firefox Full support 53Opera Full support YesSafari No support NoFirefox Android No support No
idleChrome Full support YesEdge Full support 15Firefox Full support 48Opera Full support YesSafari No support NoFirefox Android Full support 48
managementChrome Full support YesEdge Full support 79Firefox Full support 51Opera Full support YesSafari No support NoFirefox Android Full support 51
menusChrome No support NoEdge No support NoFirefox Full support 53Opera No support NoSafari Full support 14Firefox Android No support No
nativeMessagingChrome Full support 29Edge Full support 15Firefox Full support 50Opera Full support 16Safari Full support 14Firefox Android No support No
notificationsChrome Full support 5Edge Full support 79Firefox Full support 48Opera Full support 25Safari No support NoFirefox Android Full support 48
pageCaptureChrome Full support YesEdge Full support 79Firefox No support NoOpera Full support YesSafari No support NoFirefox Android No support No
pkcs11Chrome No support NoEdge No support NoFirefox Full support 58Opera No support NoSafari No support NoFirefox Android No support No
privacyChrome Full support YesEdge Full support 79Firefox Full support 54Opera Full support YesSafari No support NoFirefox Android Full support 54
proxyChrome Full support 33Edge Full support 79Firefox Full support 55Opera No support NoSafari No support NoFirefox Android Full support 55
searchChrome No support NoEdge No support NoFirefox Full support 63Opera No support NoSafari No support NoFirefox Android No support No
sessionsChrome Full support YesEdge Full support 79Firefox Full support 52Opera Full support YesSafari No support NoFirefox Android No support No
storageChrome Full support YesEdge Full support 14Firefox Full support 48Opera Full support YesSafari Full support 14Firefox Android Full support 48
tabHideChrome No support NoEdge No support NoFirefox Full support 61Opera No support NoSafari No support NoFirefox Android No support No
tabsChrome Full support YesEdge Full support 14Firefox Full support 48Opera Full support YesSafari Full support 14Firefox Android Full support 54
themeChrome No support NoEdge No support NoFirefox Full support 55Opera No support NoSafari No support NoFirefox Android No support No
topSitesChrome Full support YesEdge Full support 79Firefox Full support 52Opera Full support YesSafari No support NoFirefox Android Full support 52
unlimitedStorageChrome Full support YesEdge Full support 14Firefox Full support 56Opera No support NoSafari Full support 14
Notes
Full support 14
Notes
Notes Does not grant an unlimited storage quota. Grants a 10 MB storage quota, instead of the standard 5 MB.
Firefox Android Full support 56
webNavigationChrome Full support YesEdge Full support 14Firefox Full support 48Opera Full support 17Safari Full support 14Firefox Android Full support 48
webRequestChrome Full support YesEdge Full support 14Firefox Full support 48Opera Full support YesSafari Full support 14Firefox Android Full support 48
webRequestBlockingChrome Full support YesEdge Full support 14Firefox Full support 48Opera Full support YesSafari No support NoFirefox Android Full support 48

Legend

Full support  
Full support
No support  
No support
See implementation notes.
See implementation notes.