বেশিরভাগ এক্সটেনশন এপিআই এবং ফিচার ব্যবহার করার জন্য, আপনাকে অবশ্যই ম্যানিফেস্টের পারমিশন ফিল্ডে আপনার এক্সটেনশনের উদ্দেশ্য ঘোষণা করতে হবে। এক্সটেনশনগুলো নিম্নলিখিত ক্যাটাগরির পারমিশনের জন্য অনুরোধ করতে পারে, যা সংশ্লিষ্ট ম্যানিফেস্ট কী ব্যবহার করে নির্দিষ্ট করা হয়:
-
"permissions" - পরিচিত স্ট্রিং- এর তালিকা থেকে আইটেম ধারণ করে। পরিবর্তন হলে একটি সতর্কবার্তা প্রদর্শিত হতে পারে।
-
"optional_permissions" - ইনস্টল করার সময় নয়, বরং রানটাইমে ব্যবহারকারী কর্তৃক অনুমোদিত।
-
"content_scripts.matches" - এতে এক বা একাধিক ম্যাচ প্যাটার্ন রয়েছে যা কন্টেন্ট স্ক্রিপ্টকে এক বা একাধিক হোস্টে ইনজেক্ট করার অনুমতি দেয়। পরিবর্তনের ফলে একটি সতর্কবার্তা প্রদর্শিত হতে পারে।
-
"host_permissions" - এতে এক বা একাধিক ম্যাচ প্যাটার্ন রয়েছে যা এক বা একাধিক হোস্টে অ্যাক্সেস দেয়। পরিবর্তন হলে একটি সতর্কবার্তা প্রদর্শিত হতে পারে।
-
"optional_host_permissions" - ইনস্টল করার সময় নয়, বরং রানটাইমে ব্যবহারকারী কর্তৃক অনুমোদিত।
আপনার এক্সটেনশনটি ম্যালওয়্যার দ্বারা আক্রান্ত হলে, ক্ষতি সীমিত করতে পারমিশন সাহায্য করে। কিছু পারমিশন সংক্রান্ত সতর্কবার্তা ইনস্টলেশনের আগে বা রানটাইমে ব্যবহারকারীদের সম্মতির জন্য দেখানো হয়, যেমনটি 'সতর্কবার্তাসহ পারমিশন' অংশে বিস্তারিতভাবে বর্ণনা করা হয়েছে।
আপনার এক্সটেনশনের কার্যকারিতা যেখানেই অনুমতি দেয়, সেখানে ঐচ্ছিক অনুমতি ব্যবহার করার কথা বিবেচনা করুন, যাতে ব্যবহারকারীরা রিসোর্স ও ডেটাতে প্রবেশাধিকারের বিষয়ে অবহিত নিয়ন্ত্রণ লাভ করতে পারে।
যদি কোনো API-এর জন্য অনুমতির প্রয়োজন হয়, তবে তার ডকুমেন্টেশনে সেটি কীভাবে ঘোষণা করতে হয় তা ব্যাখ্যা করা থাকে। উদাহরণস্বরূপ, স্টোরেজ 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
}
হোস্টের অনুমতি
হোস্ট পারমিশন এক্সটেনশনগুলোকে ইউআরএল-এর ম্যাচিং প্যাটার্নগুলোর সাথে ইন্টারঅ্যাক্ট করার সুযোগ দেয়। কিছু ক্রোম এপিআই-এর নিজস্ব এপিআই পারমিশনের পাশাপাশি হোস্ট পারমিশনেরও প্রয়োজন হয়, যা প্রতিটি রেফারেন্স পেজে নথিভুক্ত করা থাকে। নিচে কিছু উদাহরণ দেওয়া হলো:
- এক্সটেনশন সার্ভিস ওয়ার্কার এবং এক্সটেনশন পেজগুলো থেকে
fetch()রিকোয়েস্ট পাঠান। -
chrome.tabsAPI ব্যবহার করে ট্যাবের সংবেদনশীল বৈশিষ্ট্যগুলো (url, title, এবং favIconUrl) পড়ুন এবং অনুসন্ধান করুন। - প্রোগ্রামের মাধ্যমে একটি কন্টেন্ট স্ক্রিপ্ট যুক্ত করুন।
-
chrome.webRequestAPI ব্যবহার করে নেটওয়ার্ক অনুরোধগুলো পর্যবেক্ষণ ও নিয়ন্ত্রণ করুন। -
chrome.cookiesAPI ব্যবহার করে কুকি অ্যাক্সেস করুন। -
chrome.declarativeNetRequestAPI ব্যবহার করে অনুরোধ এবং প্রতিক্রিয়া হেডার পুনঃনির্দেশ ও পরিবর্তন করুন।
সতর্কীকরণ সহ অনুমতি
যখন কোনো এক্সটেনশন একাধিক অনুমতি চায় এবং সেগুলোর মধ্যে অনেকগুলো ইনস্টলেশনের সময় সতর্কবার্তা দেখায়, তখন ব্যবহারকারী সতর্কবার্তাগুলোর একটি তালিকা দেখতে পাবেন, যেমনটি নিচের উদাহরণে দেখানো হয়েছে:

সীমিত সতর্কবার্তা থাকলে অথবা অনুমতিগুলো ব্যাখ্যা করে বুঝিয়ে দিলে ব্যবহারকারীরা কোনো এক্সটেনশনকে বেশি বিশ্বাস করেন। উদ্বেগজনক সতর্কবার্তা এড়াতে ঐচ্ছিক অনুমতি অথবা কম শক্তিশালী এপিআই (API) প্রয়োগ করার কথা বিবেচনা করুন। সতর্কবার্তা সংক্রান্ত সর্বোত্তম অনুশীলনের জন্য, ‘অনুমতি সতর্কবার্তা নির্দেশিকা’ দেখুন। নির্দিষ্ট সতর্কবার্তাগুলো এবং সেগুলো কোন কোন অনুমতির ক্ষেত্রে প্রযোজ্য, তা ‘অনুমতি রেফারেন্স তালিকা’-তে তালিকাভুক্ত করা আছে।
ম্যানিফেস্ট ফাইলের "host_permissions" এবং "content_scripts.matches" ফিল্ডে ম্যাচ প্যাটার্ন যোগ করা বা পরিবর্তন করলেও একটি সতর্কবার্তা প্রদর্শিত হবে। আরও জানতে, 'আপডেটিং পারমিশনস ' দেখুন।
অ্যাক্সেসের অনুমতি দিন
যদি আপনার এক্সটেনশনকে file:// ইউআরএল-এ চলতে হয় বা ইনকগনিটো মোডে কাজ করতে হয়, তবে ব্যবহারকারীদের অবশ্যই এর ডিটেইলস পেজে এক্সটেনশনটিকে অ্যাক্সেস দিতে হবে। ডিটেইলস পেজটি খোলার নির্দেশাবলী আপনি 'Manage your extensions'-এর অধীনে খুঁজে পাবেন।
ফাইল ইউআরএল এবং ইনকগনিটো পেজগুলিতে অ্যাক্সেসের অনুমতি দিন
- ক্রোমে এক্সটেনশন আইকনটিতে রাইট-ক্লিক করুন।
এক্সটেনশন পরিচালনা নির্বাচন করুন।

এক্সটেনশন মেনু ফাইল ইউআরএল বা ইনকগনিটো মোড অ্যাক্সেস চালু করতে নিচে স্ক্রোল করুন।

ফাইল ইউআরএল এবং ইনকগনিটো মোডে প্রবেশাধিকার সক্রিয় করা হয়েছে।
ব্যবহারকারী অ্যাক্সেসের অনুমতি দিয়েছেন কিনা তা শনাক্ত করতে, আপনি extension.isAllowedIncognitoAccess() অথবা extension.isAllowedFileSchemeAccess() কল করতে পারেন।