ওয়েব-অ্যাক্সেসযোগ্য সম্পদ হল একটি এক্সটেনশনের ভিতরে থাকা ফাইল যা ওয়েব পেজ বা অন্যান্য এক্সটেনশন দ্বারা অ্যাক্সেস করা যায়। এক্সটেনশনগুলি সাধারণত ওয়েব পৃষ্ঠাগুলিতে লোড করা প্রয়োজন এমন ছবি বা অন্যান্য সম্পদগুলিকে প্রকাশ করতে এই বৈশিষ্ট্যটি ব্যবহার করে, তবে একটি এক্সটেনশনের বান্ডেলে অন্তর্ভুক্ত যেকোন সম্পদকে ওয়েব অ্যাক্সেসযোগ্য করা যেতে পারে।
ডিফল্টরূপে কোনও সংস্থানই ওয়েব অ্যাক্সেসযোগ্য নয়, কারণ এটি একটি ক্ষতিকারক ওয়েবসাইটকে ফিঙ্গারপ্রিন্ট এক্সটেনশনগুলিকে অনুমতি দেয় যা একজন ব্যবহারকারী ইনস্টল করেছেন বা ইনস্টল করা এক্সটেনশনগুলিতে দুর্বলতাগুলি (উদাহরণস্বরূপ XSS বাগগুলি ) ব্যবহার করেছেন৷ শুধুমাত্র একটি এক্সটেনশনের উত্স থেকে লোড করা পৃষ্ঠা বা স্ক্রিপ্টগুলি সেই এক্সটেনশনের সংস্থানগুলি অ্যাক্সেস করতে পারে৷
ম্যানিফেস্ট ঘোষণা
কোন সংস্থানগুলি প্রকাশ করা হয়েছে এবং কোন উত্স থেকে তা ঘোষণা করতে web_accessible_resources
ম্যানিফেস্ট সম্পত্তি ব্যবহার করুন৷ এই বৈশিষ্ট্যটি বস্তুর একটি অ্যারে যা সম্পদ অ্যাক্সেসের নিয়ম ঘোষণা করে। প্রতিটি অবজেক্ট ইউআরএল এবং/অথবা এক্সটেনশন আইডিগুলির একটি অ্যারেতে এক্সটেনশন সংস্থানগুলির একটি অ্যারে ম্যাপ করে যা সেই সংস্থানগুলি অ্যাক্সেস করতে পারে।
{
...
"web_accessible_resources": [
{
"resources": [ "test1.png", "test2.png" ],
"matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
}, {
"resources": [ "test3.png", "test4.png" ],
"matches": [ "https://web-accessible-resources-2.glitch.me/*" ],
"use_dynamic_url": true
}
],
...
}
অ্যারের প্রতিটি বস্তুতে এই উপাদানগুলি রয়েছে:
-
"resources"
- স্ট্রিংগুলির একটি অ্যারে, প্রতিটিতে এক্সটেনশনের রুট ডিরেক্টরি থেকে প্রদত্ত সংস্থানের একটি আপেক্ষিক পথ রয়েছে৷ সম্পদগুলিতে ওয়াইল্ডকার্ড ম্যাচের জন্য তারকাচিহ্ন (
*
) থাকতে পারে। উদাহরণ স্বরূপ,"/images/*"
এক্সটেনশনেরimages/
ডিরেক্টরির সবকিছুকে পুনরাবৃত্তভাবে প্রকাশ করে, যখন"*.png"
সমস্ত PNG ফাইল প্রকাশ করে। -
"matches"
- স্ট্রিংগুলির একটি অ্যারে, প্রতিটিতে একটি ম্যাচ প্যাটার্ন রয়েছে যা নির্দিষ্ট করে যে কোন সাইটগুলি এই সংস্থানগুলি অ্যাক্সেস করতে পারে৷ ইউআরএল মেলানোর জন্য শুধুমাত্র মূল ব্যবহার করা হয়। মূলের মধ্যে সাবডোমেন ম্যাচিং অন্তর্ভুক্ত। Google Chrome একটি "অবৈধ মিল প্যাটার্ন" ত্রুটি নির্গত করে যদি প্যাটার্নে '/*' ছাড়া অন্য কোনো পথ থাকে।
-
"extension_ids"
- স্ট্রিংগুলির একটি অ্যারে, প্রতিটিতে একটি এক্সটেনশনের আইডি রয়েছে যা সংস্থানগুলি অ্যাক্সেস করতে পারে৷
-
"use_dynamic_url"
- সত্য হলে, শুধুমাত্র একটি ডায়নামিক আইডির মাধ্যমে সম্পদ অ্যাক্সেস করার অনুমতি দিন। প্রতি সেশনে একটি ডায়নামিক আইডি তৈরি হয়। এর মানে ব্রাউজার পুনরায় চালু হলে বা এক্সটেনশন পুনরায় লোড হলে এটি পুনরায় তৈরি হয়।
প্রতিটি উপাদান একটি "resources"
উপাদান এবং হয় একটি "matches"
বা "extension_ids"
উপাদান অন্তর্ভুক্ত করতে হবে। এটি একটি ম্যাপিং স্থাপন করে যা নির্দিষ্ট সংস্থানগুলিকে প্যাটার্নের সাথে মিলে যাওয়া ওয়েব পৃষ্ঠাগুলিতে বা মিলিত আইডিগুলির সাথে এক্সটেনশনগুলিতে প্রকাশ করে৷ "use_dynamic_url"
উপাদানটি ঐচ্ছিক।
সম্পদের নাব্যতা
URL chrome-extension://[PACKAGE ID]/[PATH]
এর মাধ্যমে সংস্থানগুলি একটি ওয়েবপেজে পাওয়া যায়, যা runtime.getURL()
পদ্ধতিতে তৈরি করা যেতে পারে। সংস্থানগুলি উপযুক্ত CORS শিরোনামগুলির সাথে পরিবেশন করা হয়, তাই সেগুলি fetch()
এর মাধ্যমে উপলব্ধ।
একটি ওয়েব উত্স থেকে একটি এক্সটেনশন সম্পদে একটি নেভিগেশন ব্লক করা হয় যদি না সংস্থানটি ওয়েব অ্যাক্সেসযোগ্য হিসাবে তালিকাভুক্ত হয়৷ এই কোণার কেস নোট করুন:
- যখন একটি এক্সটেনশন ওয়েবে অ্যাক্সেসযোগ্য নয় এমন একটি রিসোর্সে পাবলিক রিসোর্স রিডাইরেক্ট করার জন্য webRequest API ব্যবহার করে, তখন এই ধরনের অনুরোধও ব্লক করা হয়।
- ওয়েব অ্যাক্সেসযোগ্য নয় এমন সংস্থান পুনঃনির্দেশিত এক্সটেনশনের মালিকানাধীন হলেও উপরেরটি সত্য।
-
"incognito"
ক্ষেত্রের মান"split"
এ সেট করা না থাকলে ছদ্মবেশী মোডে নেভিগেশন ব্লক করা হয়।
বিষয়বস্তুর স্ক্রিপ্টগুলিকে অনুমতি দেওয়ার প্রয়োজন নেই।
উদাহরণ
ওয়েব অ্যাক্সেসিবল রিসোর্স উদাহরণটি একটি কার্যকরী এক্সটেনশনে এই উপাদানটির ব্যবহার প্রদর্শন করে।