برای استفاده از اکثر APIها و ویژگیهای افزونه ، باید هدف افزونه خود را در فیلدهای مجوزهای مانیفست اعلام کنید. افزونهها میتوانند دستههای مجوزهای زیر را که با استفاده از کلیدهای مانیفست مربوطه مشخص میشوند، درخواست کنند:
-
"permissions" - شامل مواردی از لیستی از رشتههای شناخته شده است . تغییرات ممکن است باعث ایجاد هشدار شوند.
-
"optional_permissions" - توسط کاربر در زمان اجرا اعطا میشود، نه در زمان نصب.
-
"content_scripts.matches" - شامل یک یا چند الگوی تطبیق است که به اسکریپتهای محتوا اجازه میدهد تا به یک یا چند میزبان تزریق شوند. تغییرات ممکن است باعث ایجاد هشدار شوند.
-
"host_permissions" - شامل یک یا چند الگوی منطبق است که دسترسی به یک یا چند میزبان را فراهم میکند. تغییرات ممکن است باعث ایجاد هشدار شوند.
-
"optional_host_permissions" - توسط کاربر در زمان اجرا اعطا میشود، نه در زمان نصب.
مجوزها به محدود کردن آسیب در صورت آسیب دیدن افزونه شما توسط بدافزار کمک میکنند. برخی از هشدارهای مجوز برای جلب رضایت کاربران، قبل از نصب یا در زمان اجرا نمایش داده میشوند، همانطور که در بخش مجوزها با هشدارها توضیح داده شده است.
در هر جایی که عملکرد افزونه شما اجازه میدهد، استفاده از مجوزهای اختیاری را در نظر بگیرید تا به کاربران کنترل آگاهانهای بر دسترسی به منابع و دادهها ارائه دهید.
اگر یک API به مجوزی نیاز داشته باشد، مستندات آن نحوه اعلام آن را توضیح میدهد. برای مثال، به Storage API مراجعه کنید.
مانیفست
مثال زیر بخش مجوزهای یک فایل مانیفست را نشان میدهد:
مانیفست.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
}
مجوزهای میزبان
مجوزهای میزبان به افزونهها اجازه میدهند تا با الگوهای تطبیق URL تعامل داشته باشند. برخی از APIهای کروم علاوه بر مجوزهای API خودشان، به مجوزهای میزبان نیز نیاز دارند که در هر صفحه مرجع مستند شدهاند. در اینجا چند مثال آورده شده است:
- درخواستهای
fetch()را از سرویسدهندهی افزونه و صفحات افزونه ایجاد کنید. - با استفاده از API
chrome.tabsویژگیهای حساس تب (url، title و favIconUrl) را بخوانید و پرسوجو کنید. - یک اسکریپت محتوا را به صورت برنامهنویسیشده تزریق کنید.
- درخواستهای شبکه را با API مربوط به
chrome.webRequestنظارت و کنترل کنید. - با استفاده از API مربوط به
chrome.cookiesبه کوکیها دسترسی پیدا کنید. - با استفاده از
chrome.declarativeNetRequestAPI، درخواستها و هدرهای پاسخ را تغییر مسیر داده و اصلاح کنید.
مجوزهایی با هشدار
وقتی یک افزونه چندین مجوز درخواست میکند و بسیاری از آنها هنگام نصب هشدارهایی را نمایش میدهند، کاربر لیستی از هشدارها را مشاهده خواهد کرد، مانند مثال زیر:

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

منوی افزونه برای فعال کردن دسترسی به آدرسهای اینترنتی فایل یا حالت ناشناس، به پایین اسکرول کنید.

دسترسی به آدرسهای اینترنتی فایل و حالت ناشناس فعال شد.
برای تشخیص اینکه آیا کاربر اجازه دسترسی داده است یا خیر، میتوانید extension.isAllowedIncognitoAccess() یا extension.isAllowedFileSchemeAccess() را فراخوانی کنید.