ম্যানিফেস্ট V3 এক্সটেনশনগুলো যেভাবে নেটওয়ার্ক রিকোয়েস্ট পরিবর্তন করে, তাতে পরিবর্তন এনেছে। browser.webRequest ব্যবহার করে রানটাইমে নেটওয়ার্ক রিকোয়েস্ট ইন্টারসেপ্ট ও পরিবর্তন করার পরিবর্তে, আপনার এক্সটেনশন কিছু নিয়ম নির্দিষ্ট করে দেয়, যা একটি নির্দিষ্ট শর্ত পূরণ হলে কী কী কাজ করতে হবে তা বর্ণনা করে। এটি করার জন্য ডিক্লারেটিভ নেট রিকোয়েস্ট এপিআই (Declarative Net Request API) ব্যবহার করুন।
ওয়েব রিকোয়েস্ট এপিআই এবং ডিক্লারেটিভ নেট রিকোয়েস্ট এপিআই-এর মধ্যে উল্লেখযোগ্য পার্থক্য রয়েছে। একটি ফাংশন কলকে অন্য একটি দিয়ে প্রতিস্থাপন করার পরিবর্তে, আপনাকে ব্যবহারের ক্ষেত্র (use cases) অনুযায়ী আপনার কোডটি নতুন করে লিখতে হবে। এই বিভাগে আপনাকে সেই প্রক্রিয়াটি ধাপে ধাপে দেখানো হবে।
আপনার এক্সটেনশনটি পলিসির মাধ্যমে ইনস্টল করা হলে এই পরিবর্তনগুলি করার প্রয়োজন নেই। পলিসির মাধ্যমে ইনস্টল করা এক্সটেনশনগুলির জন্য, Manifest V3-তে webRequestBlocking পারমিশনটি এখনও উপলব্ধ আছে।
এটি তিনটি অংশের মধ্যে দ্বিতীয়টি, যেখানে এক্সটেনশন সার্ভিস ওয়ার্কারের অংশ নয় এমন কোডের জন্য প্রয়োজনীয় পরিবর্তনগুলো বর্ণনা করা হয়েছে। এতে ম্যানিফেস্ট V2 দ্বারা ব্যবহৃত ব্লকিং ওয়েব রিকোয়েস্টকে, ম্যানিফেস্ট V3 দ্বারা ব্যবহৃত ডিক্লারেটিভ নেট রিকোয়েস্টে রূপান্তর করার পদ্ধতি বর্ণনা করা হয়েছে। অন্য দুটি অংশে ম্যানিফেস্ট V3-তে মাইগ্রেট করার জন্য আপনার কোড আপডেট করা এবং নিরাপত্তা উন্নত করার বিষয়গুলো আলোচনা করা হয়েছে।
ভূমিকা
Manifest V2-তে, ওয়েব রিকোয়েস্ট ব্লক করা হলে তা এক্সটেনশন এবং সেগুলোর সাথে ব্যবহৃত পেজ উভয়ের পারফরম্যান্সই মারাত্মকভাবে কমিয়ে দিত। webRequest নেমস্পেসটি নয়টি সম্ভাব্য ব্লকিং ইভেন্ট সমর্থন করে, যার প্রত্যেকটিতে অসীম সংখ্যক ইভেন্ট হ্যান্ডলার থাকতে পারে। পরিস্থিতি আরও খারাপ হয় যখন প্রতিটি ওয়েব পেজ একাধিক এক্সটেনশন দ্বারা ব্লক হওয়ার ঝুঁকিতে থাকে এবং এর জন্য প্রয়োজনীয় পারমিশনগুলো বেশ হস্তক্ষেপমূলক। Manifest V3 কলব্যাকগুলোকে ডিক্লারেটিভ রুল দিয়ে প্রতিস্থাপন করে এই সমস্যার সমাধান করে।
অনুমতি আপডেট করুন
আপনার manifest.json ফাইলের "permissions" ফিল্ডে নিম্নলিখিত পরিবর্তনগুলো করুন।
- আপনার যদি আর নেটওয়ার্ক অনুরোধ পর্যবেক্ষণ করার প্রয়োজন না থাকে, তাহলে
"webRequest"অনুমতিটি সরিয়ে দিন। - ম্যাচ প্যাটার্নগুলোকে
"permissions"থেকে"host_permissions"এ স্থানান্তর করুন।
আপনার ব্যবহারের ধরনের ওপর নির্ভর করে অন্যান্য অনুমতি যোগ করতে হবে। সেই অনুমতিগুলো যে ব্যবহারের ধরনকে সমর্থন করে, তা সহ বর্ণনা করা হয়েছে।
ঘোষণামূলক নেট অনুরোধ নিয়ম তৈরি করুন
ডিক্লারেটিভ নেট রিকোয়েস্ট রুল তৈরি করতে আপনার manifest.json ফাইলে একটি "declarative_net_request" অবজেক্ট যোগ করতে হয়। "declarative_net_request" ব্লকটিতে "rule_resource" অবজেক্টের একটি অ্যারে থাকে, যা একটি রুল ফাইলকে নির্দেশ করে। রুল ফাইলটিতে এমন অবজেক্টের একটি অ্যারে থাকে যা একটি অ্যাকশন এবং যে শর্তগুলোর অধীনে সেই অ্যাকশনগুলো কার্যকর হবে, তা নির্দিষ্ট করে দেয়।
সাধারণ ব্যবহারের ক্ষেত্রগুলি
নিম্নলিখিত বিভাগগুলিতে ডিক্লারেটিভ নেট রিকোয়েস্টের সাধারণ ব্যবহার বর্ণনা করা হয়েছে। নীচের নির্দেশাবলী কেবল একটি সংক্ষিপ্ত রূপরেখা প্রদান করে। এখানের সমস্ত তথ্য সম্পর্কে আরও বিশদ বিবরণ API রেফারেন্সে browser.declarativeNetRequest এর অধীনে বর্ণনা করা হয়েছে।
একটিমাত্র ইউআরএল ব্লক করুন
Manifest V2-এর একটি সাধারণ ব্যবহার ছিল ব্যাকগ্রাউন্ড স্ক্রিপ্টে onBeforeRequest ইভেন্ট ব্যবহার করে ওয়েব রিকোয়েস্ট ব্লক করা।
browser.webRequest.onBeforeRequest.addListener((e) => { return { cancel: true }; }, { urls: ["https://www.example.com/*"] }, ["blocking"]);
Manifest V3-এর জন্য, "block" অ্যাকশন টাইপ ব্যবহার করে একটি নতুন declarativeNetRequest রুল তৈরি করুন। উদাহরণ রুলটিতে "condition" অবজেক্টটি লক্ষ্য করুন। এর "urlFilter" অপশনটি webRequest লিসেনারে পাঠানো urls অপশনটিকে প্রতিস্থাপন করে। একটি "resourceTypes" অ্যারে ব্লক করার জন্য রিসোর্সের ক্যাটাগরি নির্দিষ্ট করে। এই উদাহরণটি শুধুমাত্র মূল HTML পেজটি ব্লক করে, কিন্তু আপনি চাইলে, উদাহরণস্বরূপ, শুধুমাত্র ফন্টগুলোও ব্লক করতে পারেন।
[ { "id" : 1, "priority": 1, "action" : { "type" : "block" }, "condition" : { "urlFilter" : "||example.com", "resourceTypes" : ["main_frame"] } } ]
এটি কার্যকর করতে, আপনাকে এক্সটেনশনটির পারমিশন আপডেট করতে হবে। manifest.json ফাইলে "webRequestBlocking" পারমিশনটি "declarativeNetRequest" পারমিশন দিয়ে প্রতিস্থাপন করুন। লক্ষ্য করুন যে "permissions" ফিল্ড থেকে URL-টি সরিয়ে দেওয়া হয়েছে, কারণ কন্টেন্ট ব্লক করার জন্য হোস্ট পারমিশনের প্রয়োজন হয় না। উপরে যেমন দেখানো হয়েছে, রুল ফাইলটি সেই হোস্ট বা হোস্টগুলোকে নির্দিষ্ট করে দেয়, যেগুলোর উপর একটি ডিক্লারেটিভ নেট রিকোয়েস্ট প্রযোজ্য হবে।
আপনি যদি এটি চেষ্টা করতে চান, তাহলে নিচের কোডটি আমাদের স্যাম্পল রিপোজিটরিতে পাওয়া যাবে ।
"permissions": [ "webRequestBlocking", "https://*.example.com/*" ]
"permissions": [ "declarativeNetRequest", ]
একাধিক URL পুনঃনির্দেশ করুন
Manifest V2-এর আরেকটি সাধারণ ব্যবহার ছিল BeforeRequest ইভেন্ট ব্যবহার করে ওয়েব রিকোয়েস্ট রিডাইরেক্ট করা।
browser.webRequest.onBeforeRequest.addListener((e) => { console.log(e); return { redirectUrl: "https://developer.chrome.com/docs/extensions/mv3/intro/" }; }, { urls: [ "https://developer.chrome.com/docs/extensions/mv2/" ] }, ["blocking"] );
Manifest V3-এর জন্য, "redirect" অ্যাকশন টাইপটি ব্যবহার করুন। আগের মতোই, "urlFilter" webRequest লিসেনারে পাঠানো url অপশনটিকে প্রতিস্থাপন করে। লক্ষ্য করুন যে এই উদাহরণে, রুল ফাইলের "action" অবজেক্টে একটি "redirect" ফিল্ড রয়েছে, যেখানে ফিল্টার করা URL-এর পরিবর্তে ফেরত দেওয়ার জন্য URL-টি থাকে।
[ { "id" : 1, "priority": 1, "action": { "type": "redirect", "redirect": { "url": "https://developer.chrome.com/docs/extensions/mv3/intro/" } }, "condition": { "urlFilter": "https://developer.chrome.com/docs/extensions/mv2/", "resourceTypes": ["main_frame"] } } ]
এই সিনারিওটির জন্যও এক্সটেনশনের পারমিশনে পরিবর্তন আনা প্রয়োজন। আগের মতোই, "webRequestBlocking" পারমিশনটিকে "declarativeNetRequest" পারমিশন দিয়ে প্রতিস্থাপন করুন। URL-গুলো আবার manifest.json থেকে একটি রুল ফাইলে সরানো হয়েছে। লক্ষ্য করুন যে, হোস্ট পারমিশনের পাশাপাশি রিডাইরেক্ট করার জন্য "declarativeNetRequestWithHostAccess" পারমিশনটিরও প্রয়োজন হয়।
আপনি যদি এটি চেষ্টা করতে চান, তাহলে নিচের কোডটি আমাদের স্যাম্পল রিপোজিটরিতে পাওয়া যাবে ।
"permissions": [ "webRequestBlocking", "https://developer.chrome.com/docs/extensions/*", "https://developer.chrome.com/docs/extensions/reference" ]
"permissions": [ "declarativeNetRequestWithHostAccess" ], "host_permissions": [ "https://developer.chrome.com/*" ]
কুকি ব্লক করুন
Manifest V2-তে কুকি ব্লক করার জন্য, ওয়েব রিকোয়েস্ট হেডারগুলো পাঠানোর আগেই সেগুলোকে ইন্টারসেপ্ট করে একটি নির্দিষ্ট কুকি মুছে ফেলতে হয়।
browser.webRequest.onBeforeSendHeaders.addListener( function(details) { removeHeader(details.requestHeaders, 'cookie'); return {requestHeaders: details.requestHeaders}; }, // filters {urls: ['https://*/*', 'http://*/*']}, // extraInfoSpec ['blocking', 'requestHeaders', 'extraHeaders']);
Manifest V3-ও একটি রুল ফাইলের মধ্যে থাকা একটি রুলের মাধ্যমে এই কাজটি করে। এবার অ্যাকশন টাইপটি হলো "modifyHeaders" । ফাইলটি "requestHeaders" অবজেক্টের একটি অ্যারে গ্রহণ করে, যা নির্দিষ্ট করে দেয় কোন হেডারগুলো পরিবর্তন করতে হবে এবং কীভাবে সেগুলো পরিবর্তন করতে হবে। লক্ষ্য করুন যে "condition" অবজেক্টটিতে শুধুমাত্র একটি "resourceTypes" অ্যারে রয়েছে। এটি আগের উদাহরণগুলোর মতোই একই ভ্যালুগুলো সাপোর্ট করে।
আপনি যদি এটি চেষ্টা করতে চান, তাহলে নিচের কোডটি আমাদের স্যাম্পল রিপোজিটরিতে পাওয়া যাবে ।
[ { "id": 1, "priority": 1, "action": { "type": "modifyHeaders", "requestHeaders": [ { "header": "cookie", "operation": "remove" } ] }, "condition": { "urlFilter": "|*?no-cookies=1", "resourceTypes": ["main_frame"] } } ]
এই পরিস্থিতিতেও এক্সটেনশনটির পারমিশনে পরিবর্তন আনা প্রয়োজন। আগের মতোই, "webRequestBlocking" পারমিশনটিকে "declarativeNetRequest" পারমিশন দিয়ে প্রতিস্থাপন করুন।
"permissions": [ "webRequest", "webRequestBlocking", "https://*/*", "http://*/*" ],
"permissions": [ "declarativeNetRequest", ], "host_permissions": [ "" ]
ম্যানিফেস্ট V3 এক্সটেনশনগুলো যেভাবে নেটওয়ার্ক রিকোয়েস্ট পরিবর্তন করে, তাতে পরিবর্তন এনেছে। browser.webRequest ব্যবহার করে রানটাইমে নেটওয়ার্ক রিকোয়েস্ট ইন্টারসেপ্ট ও পরিবর্তন করার পরিবর্তে, আপনার এক্সটেনশন কিছু নিয়ম নির্দিষ্ট করে দেয়, যা একটি নির্দিষ্ট শর্ত পূরণ হলে কী কী কাজ করতে হবে তা বর্ণনা করে। এটি করার জন্য ডিক্লারেটিভ নেট রিকোয়েস্ট এপিআই (Declarative Net Request API) ব্যবহার করুন।
ওয়েব রিকোয়েস্ট এপিআই এবং ডিক্লারেটিভ নেট রিকোয়েস্ট এপিআই-এর মধ্যে উল্লেখযোগ্য পার্থক্য রয়েছে। একটি ফাংশন কলকে অন্য একটি দিয়ে প্রতিস্থাপন করার পরিবর্তে, আপনাকে ব্যবহারের ক্ষেত্র (use cases) অনুযায়ী আপনার কোডটি নতুন করে লিখতে হবে। এই বিভাগে আপনাকে সেই প্রক্রিয়াটি ধাপে ধাপে দেখানো হবে।
আপনার এক্সটেনশনটি পলিসির মাধ্যমে ইনস্টল করা হলে এই পরিবর্তনগুলি করার প্রয়োজন নেই। পলিসির মাধ্যমে ইনস্টল করা এক্সটেনশনগুলির জন্য, Manifest V3-তে webRequestBlocking পারমিশনটি এখনও উপলব্ধ আছে।
এটি তিনটি অংশের মধ্যে দ্বিতীয়টি, যেখানে এক্সটেনশন সার্ভিস ওয়ার্কারের অংশ নয় এমন কোডের জন্য প্রয়োজনীয় পরিবর্তনগুলো বর্ণনা করা হয়েছে। এতে ম্যানিফেস্ট V2 দ্বারা ব্যবহৃত ব্লকিং ওয়েব রিকোয়েস্টকে, ম্যানিফেস্ট V3 দ্বারা ব্যবহৃত ডিক্লারেটিভ নেট রিকোয়েস্টে রূপান্তর করার পদ্ধতি বর্ণনা করা হয়েছে। অন্য দুটি অংশে ম্যানিফেস্ট V3-তে মাইগ্রেট করার জন্য আপনার কোড আপডেট করা এবং নিরাপত্তা উন্নত করার বিষয়গুলো আলোচনা করা হয়েছে।
ভূমিকা
Manifest V2-তে, ওয়েব রিকোয়েস্ট ব্লক করা হলে তা এক্সটেনশন এবং সেগুলোর সাথে ব্যবহৃত পেজ উভয়ের পারফরম্যান্সই মারাত্মকভাবে কমিয়ে দিত। webRequest নেমস্পেসটি নয়টি সম্ভাব্য ব্লকিং ইভেন্ট সমর্থন করে, যার প্রত্যেকটিতে অসীম সংখ্যক ইভেন্ট হ্যান্ডলার থাকতে পারে। পরিস্থিতি আরও খারাপ হয় যখন প্রতিটি ওয়েব পেজ একাধিক এক্সটেনশন দ্বারা ব্লক হওয়ার ঝুঁকিতে থাকে এবং এর জন্য প্রয়োজনীয় পারমিশনগুলো বেশ হস্তক্ষেপমূলক। Manifest V3 কলব্যাকগুলোকে ডিক্লারেটিভ রুল দিয়ে প্রতিস্থাপন করে এই সমস্যার সমাধান করে।
অনুমতি আপডেট করুন
আপনার manifest.json ফাইলের "permissions" ফিল্ডে নিম্নলিখিত পরিবর্তনগুলো করুন।
- আপনার যদি আর নেটওয়ার্ক অনুরোধ পর্যবেক্ষণ করার প্রয়োজন না থাকে, তাহলে
"webRequest"অনুমতিটি সরিয়ে দিন। - ম্যাচ প্যাটার্নগুলোকে
"permissions"থেকে"host_permissions"এ স্থানান্তর করুন।
আপনার ব্যবহারের ধরনের ওপর নির্ভর করে অন্যান্য অনুমতি যোগ করতে হবে। সেই অনুমতিগুলো যে ব্যবহারের ধরনকে সমর্থন করে, তা সহ বর্ণনা করা হয়েছে।
ঘোষণামূলক নেট অনুরোধ নিয়ম তৈরি করুন
ডিক্লারেটিভ নেট রিকোয়েস্ট রুল তৈরি করতে আপনার manifest.json ফাইলে একটি "declarative_net_request" অবজেক্ট যোগ করতে হয়। "declarative_net_request" ব্লকটিতে "rule_resource" অবজেক্টের একটি অ্যারে থাকে, যা একটি রুল ফাইলকে নির্দেশ করে। রুল ফাইলটিতে এমন অবজেক্টের একটি অ্যারে থাকে যা একটি অ্যাকশন এবং যে শর্তগুলোর অধীনে সেই অ্যাকশনগুলো কার্যকর হবে, তা নির্দিষ্ট করে দেয়।
সাধারণ ব্যবহারের ক্ষেত্রগুলি
নিম্নলিখিত বিভাগগুলিতে ডিক্লারেটিভ নেট রিকোয়েস্টের সাধারণ ব্যবহার বর্ণনা করা হয়েছে। নীচের নির্দেশাবলী কেবল একটি সংক্ষিপ্ত রূপরেখা প্রদান করে। এখানের সমস্ত তথ্য সম্পর্কে আরও বিশদ বিবরণ API রেফারেন্সে browser.declarativeNetRequest এর অধীনে বর্ণনা করা হয়েছে।
একটিমাত্র ইউআরএল ব্লক করুন
Manifest V2-এর একটি সাধারণ ব্যবহার ছিল ব্যাকগ্রাউন্ড স্ক্রিপ্টে onBeforeRequest ইভেন্ট ব্যবহার করে ওয়েব রিকোয়েস্ট ব্লক করা।
browser.webRequest.onBeforeRequest.addListener((e) => { return { cancel: true }; }, { urls: ["https://www.example.com/*"] }, ["blocking"]);
Manifest V3-এর জন্য, "block" অ্যাকশন টাইপ ব্যবহার করে একটি নতুন declarativeNetRequest রুল তৈরি করুন। উদাহরণ রুলটিতে "condition" অবজেক্টটি লক্ষ্য করুন। এর "urlFilter" অপশনটি webRequest লিসেনারে পাঠানো urls অপশনটিকে প্রতিস্থাপন করে। একটি "resourceTypes" অ্যারে ব্লক করার জন্য রিসোর্সের ক্যাটাগরি নির্দিষ্ট করে। এই উদাহরণটি শুধুমাত্র মূল HTML পেজটি ব্লক করে, কিন্তু আপনি চাইলে, উদাহরণস্বরূপ, শুধুমাত্র ফন্টগুলোও ব্লক করতে পারেন।
[ { "id" : 1, "priority": 1, "action" : { "type" : "block" }, "condition" : { "urlFilter" : "||example.com", "resourceTypes" : ["main_frame"] } } ]
এটি কার্যকর করতে, আপনাকে এক্সটেনশনটির পারমিশন আপডেট করতে হবে। manifest.json ফাইলে "webRequestBlocking" পারমিশনটি "declarativeNetRequest" পারমিশন দিয়ে প্রতিস্থাপন করুন। লক্ষ্য করুন যে "permissions" ফিল্ড থেকে URL-টি সরিয়ে দেওয়া হয়েছে, কারণ কন্টেন্ট ব্লক করার জন্য হোস্ট পারমিশনের প্রয়োজন হয় না। উপরে যেমন দেখানো হয়েছে, রুল ফাইলটি সেই হোস্ট বা হোস্টগুলোকে নির্দিষ্ট করে দেয়, যেগুলোর উপর একটি ডিক্লারেটিভ নেট রিকোয়েস্ট প্রযোজ্য হবে।
আপনি যদি এটি চেষ্টা করতে চান, তাহলে নিচের কোডটি আমাদের স্যাম্পল রিপোজিটরিতে পাওয়া যাবে ।
"permissions": [ "webRequestBlocking", "https://*.example.com/*" ]
"permissions": [ "declarativeNetRequest", ]
একাধিক URL পুনঃনির্দেশ করুন
Manifest V2-এর আরেকটি সাধারণ ব্যবহার ছিল BeforeRequest ইভেন্ট ব্যবহার করে ওয়েব রিকোয়েস্ট রিডাইরেক্ট করা।
browser.webRequest.onBeforeRequest.addListener((e) => { console.log(e); return { redirectUrl: "https://developer.chrome.com/docs/extensions/mv3/intro/" }; }, { urls: [ "https://developer.chrome.com/docs/extensions/mv2/" ] }, ["blocking"] );
Manifest V3-এর জন্য, "redirect" অ্যাকশন টাইপটি ব্যবহার করুন। আগের মতোই, "urlFilter" webRequest লিসেনারে পাঠানো url অপশনটিকে প্রতিস্থাপন করে। লক্ষ্য করুন যে এই উদাহরণে, রুল ফাইলের "action" অবজেক্টে একটি "redirect" ফিল্ড রয়েছে, যেখানে ফিল্টার করা URL-এর পরিবর্তে ফেরত দেওয়ার জন্য URL-টি থাকে।
[ { "id" : 1, "priority": 1, "action": { "type": "redirect", "redirect": { "url": "https://developer.chrome.com/docs/extensions/mv3/intro/" } }, "condition": { "urlFilter": "https://developer.chrome.com/docs/extensions/mv2/", "resourceTypes": ["main_frame"] } } ]
এই সিনারিওটির জন্যও এক্সটেনশনের পারমিশনে পরিবর্তন আনা প্রয়োজন। আগের মতোই, "webRequestBlocking" পারমিশনটিকে "declarativeNetRequest" পারমিশন দিয়ে প্রতিস্থাপন করুন। URL-গুলো আবার manifest.json থেকে একটি রুল ফাইলে সরানো হয়েছে। লক্ষ্য করুন যে, হোস্ট পারমিশনের পাশাপাশি রিডাইরেক্ট করার জন্য "declarativeNetRequestWithHostAccess" পারমিশনটিরও প্রয়োজন হয়।
আপনি যদি এটি চেষ্টা করতে চান, তাহলে নিচের কোডটি আমাদের স্যাম্পল রিপোজিটরিতে পাওয়া যাবে ।
"permissions": [ "webRequestBlocking", "https://developer.chrome.com/docs/extensions/*", "https://developer.chrome.com/docs/extensions/reference" ]
"permissions": [ "declarativeNetRequestWithHostAccess" ], "host_permissions": [ "https://developer.chrome.com/*" ]
কুকি ব্লক করুন
Manifest V2-তে কুকি ব্লক করার জন্য, ওয়েব রিকোয়েস্ট হেডারগুলো পাঠানোর আগেই সেগুলোকে ইন্টারসেপ্ট করে একটি নির্দিষ্ট কুকি মুছে ফেলতে হয়।
browser.webRequest.onBeforeSendHeaders.addListener( function(details) { removeHeader(details.requestHeaders, 'cookie'); return {requestHeaders: details.requestHeaders}; }, // filters {urls: ['https://*/*', 'http://*/*']}, // extraInfoSpec ['blocking', 'requestHeaders', 'extraHeaders']);
Manifest V3-ও একটি রুল ফাইলের মধ্যে থাকা একটি রুলের মাধ্যমে এই কাজটি করে। এবার অ্যাকশন টাইপটি হলো "modifyHeaders" । ফাইলটি "requestHeaders" অবজেক্টের একটি অ্যারে গ্রহণ করে, যা নির্দিষ্ট করে দেয় কোন হেডারগুলো পরিবর্তন করতে হবে এবং কীভাবে সেগুলো পরিবর্তন করতে হবে। লক্ষ্য করুন যে "condition" অবজেক্টটিতে শুধুমাত্র একটি "resourceTypes" অ্যারে রয়েছে। এটি আগের উদাহরণগুলোর মতোই একই ভ্যালুগুলো সাপোর্ট করে।
আপনি যদি এটি চেষ্টা করতে চান, তাহলে নিচের কোডটি আমাদের স্যাম্পল রিপোজিটরিতে পাওয়া যাবে ।
[ { "id": 1, "priority": 1, "action": { "type": "modifyHeaders", "requestHeaders": [ { "header": "cookie", "operation": "remove" } ] }, "condition": { "urlFilter": "|*?no-cookies=1", "resourceTypes": ["main_frame"] } } ]
এই পরিস্থিতিতেও এক্সটেনশনটির পারমিশনে পরিবর্তন আনা প্রয়োজন। আগের মতোই, "webRequestBlocking" পারমিশনটিকে "declarativeNetRequest" পারমিশন দিয়ে প্রতিস্থাপন করুন।
"permissions": [ "webRequest", "webRequestBlocking", "https://*/*", "http://*/*" ],
"permissions": [ "declarativeNetRequest", ], "host_permissions": [ "" ]