برای استفاده از اکثر میاناهای برنامهسازی کاربردی افزونه و ویژگیها، باید قصد افزونهتان را در فیلدهای اجازههای مانیفست اعلام کنید. افزونهها میتوانند دستههای اجازههای زیر را که بااستفاده از کلیدهای مانیفست مربوطه مشخص شدهاند درخواست کنند:
"permissions"- حاوی مواردی از فهرست رشتههای شناختهشده است. تغییرات ممکن است باعث ایجاد هشدار شود.
"optional_permissions"- توسط کاربر در زمان اجرا اعطا میشود، نه در زمان نصب.
"content_scripts.matches"- حاوی یک یا چند الگوی مطابقت است که به اسکریپتهای محتوا اجازه میدهد به یک یا چند میزبان تزریق شوند. تغییرات ممکن است باعث ایجاد هشدار شود.
"host_permissions"- حاوی یک یا چند الگوی مطابقت است که به یک یا چند میزبان دسترسی میدهد. تغییرات ممکن است باعث ایجاد هشدار شود.
"optional_host_permissions"- توسط کاربر در زمان اجرا اعطا میشود، نه در زمان نصب.
اگر افزونه شما توسط بدافزار بهخطر بیفتد، اجازهها به محدود کردن آسیب کمک میکنند. برخیاز هشدارهای اجازه قبلاز نصب یا در زمان اجرا برای کسب رضایت کاربران به آنها نمایش داده میشود، همانطور که در اجازه با هشدار بهطور مفصل توضیح داده شده است.
هرجا که عملکرد افزونهتان اجازه میدهد، از اجازههای اختیاری استفاده کنید تا کاربران بتوانند آگاهانه دسترسی به منابع و دادهها را کنترل کنند.
اگر میانای برنامهسازی کاربردی به اجازهای نیاز داشته باشد، اسناد آن نحوه اعلام آن را توضیح میدهد. برای مثال، Storage API را ببینید.
مانیفست
در زیر نمونهای از بخش اجازههای فایل مانیفست آورده شده است:
manifest.json:
{
"name": "Permissions Extension",
...
"permissions": [
"activeTab",
"contextMenus",
"storage"
],
"optional_permissions": [
"topSites",
],
"host_permissions": [
"https://www.developer.chrome.com/*"
],
"optional_host_permissions":[
"https://*/*",
"http://*/*"
],
...
"manifest_version": 3
}
اجازههای میزبان
اجازههای میزبان به افزونهها امکان میدهد با الگوهای منطبق نشانی وب تعامل داشته باشند. برخیاز Chrome API علاوهبر اجازههای API خودشان، به اجازههای میزبان نیز نیاز دارند که در هر صفحه مرجع مستند شده است. چند نمونه در زیر آمده است:
- درخواستهای
fetch()را از کارگر سرویس افزونه و صفحههای افزونه انجام دهید. - خواندن و پرسمان کردن ویژگیهای برگه حساس (نشانی وب، عنوان، و favIconUrl) بااستفاده از
browser.tabsAPI. - متن محتوا را بهصورت برنامهنویسیشده تزریق کنید.
- درخواستهای شبکه را با میانای برنامهسازی کاربردی
browser.webRequestپایش و کنترل کنید. - با میانای برنامهسازی کاربردی
browser.cookiesبه کوکیها دسترسی پیدا کنید. - هدایت کردن و اصلاح کردن درخواستها و سرایندهای پاسخ بااستفاده از میانای برنامهسازی کاربردی
browser.declarativeNetRequest.
در برخی موارد خاص، اجازههای میزبان لازم نیست. این موارد عبارتاند از:
- استفاده از میانای برنامهسازی کاربردی
chrome.tabsبرای دسترسی به برگهها و اصلاح آنها، ازجمله دسترسی به نشانی وب برگه درصورت داشتن اجازهtabs. - تعامل با مرورگر بااستفاده از میانای برنامهسازی کاربردی
chrome.debugger. - اجازه دادن به تزریق اسکریپت محتوای اعلامشده در مانیفست.
اجازههای دارای هشدار
وقتی افزونهای چندین اجازه درخواست میکند و بسیاری از آنها درطول نصب هشدار نمایش میدهند، کاربر فهرستی از هشدارها را میبیند، مانند مثال زیر:

کاربران بیشتر به افزونهای اعتماد میکنند که هشدارهای محدودی داشته باشد یا اجازهها برایشان توضیح داده شده باشد. برای جلوگیری از هشدارهای نگرانکننده، اجازههای اختیاری یا میانای برنامهسازی کاربردی با قدرت کمتر را پیادهسازی کنید. برای روالهای مطلوب هشدارها، به رهنمودهای هشدارهای اجازه مراجعه کنید. هشدارهای خاص با اجازههایی که برای آنها اعمال میشود در فهرست مرجع اجازهها فهرست شده است.
افزودن یا تغییر الگوهای مطابقت در فیلدهای "host_permissions" و "content_scripts.matches" فایل مانیفست نیز باعث ایجاد هشدار میشود. برای کسب اطلاعات بیشتر،
بهروزرسانی اجازهها را ببینید.
دسترسی مجاز است
اگر افزونه شما باید در نشانیهای وب file:// اجرا شود یا در حالت ناشناس کار کند، کاربران باید در صفحه جزئیات افزونه به آن اجازه دسترسی بدهند. دستورالعملهای باز کردن صفحه جزئیات را میتوانید در بخش مدیریت افزونهها پیدا کنید.
اجازه دسترسی به نشانیهای وب فایل و صفحههای ناشناس
- روی نماد افزونه در Chrome کلیک راست کنید.
مدیریت افزونه را انتخاب کنید.
منو افزونه برای فعال کردن دسترسی به نشانیهای وب فایل یا حالت ناشناس، به پایین پیمایش کنید.
دسترسی به نشانیهای وب فایل و حالت ناشناس فعال شده است.
برای تشخیص اینکه کاربر اجازه دسترسی داده است یا نه، میتوانید extension.isAllowedIncognitoAccess() یا
extension.isAllowedFileSchemeAccess() را فراخوانی کنید.