browser.webRequest

বিবরণ

ট্রাফিক পর্যবেক্ষণ ও বিশ্লেষণ করতে এবং ইন-ফ্লাইট অনুরোধ ইন্টারসেপ্ট, ব্লক বা পরিবর্তন করতে chrome.webRequest API ব্যবহার করুন।

অনুমতি

webRequest

ওয়েব রিকোয়েস্ট API ব্যবহার করার জন্য আপনাকে এক্সটেনশন ম্যানিফেস্টে "webRequest" সংক্রান্ত অনুমতি ঘোষণা করতে হবে, এর সাথে প্রয়োজনীয় হোস্ট সংক্রান্ত অনুমতিও দিতে হবে। সাব-রিসোর্স অনুরোধ ইন্টারসেপ্ট করতে, এক্সটেনশনের কাছে অনুরোধ করা URL এবং এর ইনিশিয়েটর, দুটিরই অ্যাক্সেস থাকতে হবে। যেমন:

{
  "name": "My extension",
  ...
  "permissions": [
    "webRequest"
  ],
  "host_permissions": [
    "*://*.google.com/*"
  ],
  ...
}

webRequestBlocking

ব্লকিং ইভেন্ট হ্যান্ডলার রেজিস্টার করার জন্য প্রয়োজন। Manifest V3 অনুযায়ী, এটি শুধুমাত্র নীতি ইনস্টল করা এক্সটেনশনের জন্য উপলভ্য।

webRequestAuthProvider

onAuthRequired পদ্ধতি ব্যবহার করতে হবে। যাচাইকরণ ম্যানেজ করা দেখুন।

ধারণা ও ব্যবহার

অনুরোধের লাইফ সাইকেল

ওয়েব রিকোয়েস্ট API এমন এক সেট ইভেন্টকে সংজ্ঞায়িত করে যা ওয়েব রিকোয়েস্টের লাইফ সাইকেল অনুসরণ করে। আপনি ট্রাফিক পর্যবেক্ষণ ও বিশ্লেষণ করতে এইসব ইভেন্ট ব্যবহার করতে পারবেন। নির্দিষ্ট কিছু সিঙ্ক্রোনাস ইভেন্ট আপনাকে কোনও অনুরোধ ইন্টারসেপ্ট, ব্লক বা পরিবর্তন করার অনুমতি দেবে।

সফল অনুরোধের জন্য ইভেন্ট লাইফ সাইকেল এখানে দেখানো হয়েছে, এর পরে ইভেন্টের সংজ্ঞা দেওয়া হয়েছে:

webrequest API-এর দৃষ্টিকোণ থেকে ওয়েব রিকোয়েস্টের লাইফ সাইকেল

onBeforeRequest (ঐচ্ছিকভাবে সিঙ্ক করা)
কোনও অনুরোধ হওয়ার ঠিক আগে ফায়ার করে। কোনও TCP কানেকশন তৈরি হওয়ার আগে এই ইভেন্ট পাঠানো হয় এবং অনুরোধ বাতিল বা রিডাইরেক্ট করার জন্য ব্যবহার করা যেতে পারে।
onBeforeSendHeaders (ঐচ্ছিকভাবে সিঙ্ক করা)
অনুরোধ করা হলে এবং প্রাথমিক হেডার প্রস্তুত হলে ফায়ার করে। ইভেন্টটি এক্সটেনশনকে রিকোয়েস্ট হেডার (*) যোগ, পরিবর্তন ও মুছে দেওয়ার অনুমতি দেওয়ার জন্য তৈরি করা হয়েছে। onBeforeSendHeaders ইভেন্টটি সব সাবস্ক্রাইবারকে পাস করা হয়, তাই বিভিন্ন সাবস্ক্রাইবার অনুরোধটি পরিবর্তন করার চেষ্টা করতে পারে; এটি কীভাবে ম্যানেজ করা হয় তা জানতে প্রয়োগের বিবরণ বিভাগটি দেখুন। এই ইভেন্ট অনুরোধ বাতিল করতে ব্যবহার করা যেতে পারে।
onSendHeaders
সব এক্সটেনশন রিকোয়েস্ট হেডার পরিবর্তন করার সুযোগ পাওয়ার পরে ফায়ার করে এবং চূড়ান্ত (*) ভার্সন দেখায়। নেটওয়ার্কে হেডার পাঠানোর আগে ইভেন্ট ট্রিগার করা হয়। এই ইভেন্টটি তথ্যমূলক এবং অ্যাসিঙ্ক্রোনাসভাবে ম্যানেজ করা হয়। এটি অনুরোধ পরিবর্তন বা বাতিল করার অনুমতি দেয় না।
onHeadersReceived (ঐচ্ছিকভাবে সিঙ্ক করা)
প্রতিবার HTTP(S) রেসপন্স হেডার পাওয়া গেলে ফায়ার করে। রিডাইরেক্ট ও যাচাইকরণের অনুরোধের কারণে প্রতিটি অনুরোধের জন্য এটি একাধিকবার হতে পারে। এই ইভেন্টের উদ্দেশ্য হল এক্সটেনশনকে ইনকামিং Content-Type হেডারের মতো রেসপন্স হেডার যোগ, পরিবর্তন ও মুছে ফেলার অনুমতি দেওয়া। এই ইভেন্ট ট্রিগার হওয়ার আগে ক্যাশিং নির্দেশিকা প্রসেস করা হয়, তাই Cache-Control-এর মতো হেডার পরিবর্তন করলে ব্রাউজারের ক্যাশেতে কোনও প্রভাব পড়ে না। এছাড়াও, এটি আপনাকে অনুরোধ বাতিল বা রিডাইরেক্ট করার অনুমতি দেয়।
onAuthRequired (ঐচ্ছিকভাবে সিঙ্ক করা)
কোনও অনুরোধের জন্য ব্যবহারকারীর যাচাইকরণ প্রয়োজন হলে ফায়ার করে। যাচাইকরণ সংক্রান্ত ক্রেডেনশিয়াল প্রদান করার জন্য এই ইভেন্টটি সিঙ্ক্রোনাসভাবে ম্যানেজ করা যেতে পারে। মনে রাখবেন, এক্সটেনশন ভুল ক্রেডেনশিয়াল প্রদান করতে পারে। বারবার ভুল ক্রেডেনশিয়াল দিয়ে ইনফিনিট লুপে যাতে না পড়েন সেই বিষয়ে খেয়াল রাখুন। অনুরোধ বাতিল করার জন্যও এটি ব্যবহার করা যেতে পারে।
onBeforeRedirect
রিডাইরেক্ট কার্যকর হওয়ার ঠিক আগে ফায়ার করে। HTTP রেসপন্স কোড বা এক্সটেনশনের মাধ্যমে রিডাইরেকশন ট্রিগার করা যেতে পারে। এই ইভেন্টটি তথ্যমূলক এবং অ্যাসিঙ্ক্রোনাসভাবে পরিচালনা করা হয়। এটি আপনাকে অনুরোধ পরিবর্তন বা বাতিল করতে দেয় না।
onResponseStarted
রেসপন্স বডির প্রথম বাইট পাওয়া গেলে ফায়ার করে। HTTP অনুরোধের ক্ষেত্রে, এর অর্থ হল স্ট্যাটাস লাইন এবং রেসপন্স হেডার উপলভ্য। এই ইভেন্টটি তথ্যমূলক এবং অ্যাসিঙ্ক্রোনাসভাবে ম্যানেজ করা হয়। এটি অনুরোধ পরিবর্তন বা বাতিল করার অনুমতি দেয় না।
onCompleted
অনুরোধ প্রসেস করা হয়ে গেলে ফায়ার হয়।
onErrorOccurred
কোনও অনুরোধ প্রসেস করা না গেলে ফায়ার হয়।

ওয়েব রিকোয়েস্ট API গ্যারেন্টি দেয় যে প্রতিটি অনুরোধের জন্য, হয় onCompleted অথবা onErrorOccurred চূড়ান্ত ইভেন্ট হিসেবে ফায়ার করা হয়, তবে একটি ব্যতিক্রম আছে: কোনও অনুরোধ data:// URL-এ রিডাইরেক্ট করা হলে, onBeforeRedirect হল শেষ রিপোর্ট করা ইভেন্ট।

* মনে রাখবেন, ওয়েব রিকোয়েস্ট API এক্সটেনশনে নেটওয়ার্ক স্ট্যাকের অ্যাবস্ট্রাকশন দেখায়। অভ্যন্তরীণভাবে, একটি URL অনুরোধকে একাধিক HTTP অনুরোধে বিভক্ত করা যেতে পারে (যেমন, একটি বড় ফাইল থেকে পৃথক বাইট রেঞ্জ আনতে) অথবা নেটওয়ার্কের সাথে যোগাযোগ না করেই নেটওয়ার্ক স্ট্যাক দ্বারা পরিচালনা করা যেতে পারে। এই কারণে, API নেটওয়ার্কে পাঠানো চূড়ান্ত HTTP হেডার প্রদান করে না। যেমন, ক্যাশিং সম্পর্কিত সব হেডার এক্সটেনশনে দেখা যায় না।

বর্তমানে onBeforeSendHeaders ইভেন্টে নিম্নলিখিত হেডার প্রদান করা হয়নি। এই তালিকা সম্পূর্ণ বা অপরিবর্তিত থাকবে কিনা তার কোনও গ্যারেন্টি নেই।

  • অনুমোদন
  • Cache-Control
  • কানেকশন
  • Content-Length
  • হোস্ট
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • আংশিক-ডেটা
  • Pragma
  • Proxy-Authorization
  • প্রক্সি-কানেকশন
  • Transfer-Encoding

Chrome 79 থেকে শুরু করে, রিকোয়েস্ট হেডার পরিবর্তন ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) চেক করাকে প্রভাবিত করে। ক্রস-অরিজিন অনুরোধের জন্য পরিবর্তিত হেডার যদি মাপকাঠি পূরণ না করে, তাহলে সার্ভারকে জিজ্ঞাসা করার জন্য একটি CORS প্রিফ্লাইট পাঠানো হবে যে এই ধরনের হেডার গ্রহণ করা যাবে কিনা। CORS প্রোটোকল লঙ্ঘন করার জন্য আপনাকে যদি সত্যিই হেডার পরিবর্তন করতে হয়, তাহলে opt_extraInfoSpec-এ 'extraHeaders' উল্লেখ করতে হবে। অন্যদিকে, রেসপন্স হেডার পরিবর্তন করলে তা CORS চেককে প্রতারিত করতে পারে না। আপনাকে CORS প্রোটোকলকে প্রতারিত করতে হলে, রেসপন্স মডিফিকেশনের জন্য 'extraHeaders'-ও নির্দিষ্ট করতে হবে।

Chrome 79 থেকে শুরু করে, webRequest API ডিফল্ট হিসেবে CORS প্রিফ্লাইট অনুরোধ এবং উত্তর ইন্টারসেপ্ট করে না। অনুরোধ URL-এর জন্য CORS প্রিফ্লাইট এক্সটেনশনে দেখা যায় যদি অনুরোধ URL-এর জন্য opt_extraInfoSpec-এ 'extraHeaders' সহ লিসনার থাকে। এছাড়াও, onBeforeRequest Chrome 79 থেকে 'extraHeaders' নিতে পারে।

Chrome 79 থেকে শুরু করে, নিম্নলিখিত অনুরোধ হেডার প্রদান করা হয় না এবং opt_extraInfoSpec-এ 'extraHeaders' নির্দিষ্ট না করে এটি পরিবর্তন বা সরানো যায় না:

  • অরিজিন

Chrome 72 থেকে, ক্রস অরিজিন রিড ব্লকিং (CORB) উত্তর ব্লক করার আগে আপনাকে উত্তর পরিবর্তন করতে হলে, opt_extraInfoSpec-এ 'extraHeaders' উল্লেখ করতে হবে।

Chrome 72 থেকে শুরু করে, নিম্নলিখিত অনুরোধের হেডারগুলি প্রদান করা হয় না এবং opt_extraInfoSpec-এ 'extraHeaders' নির্দিষ্ট না করে পরিবর্তন বা সরানো যায় না:

  • Accept-Language
  • Accept-Encoding
  • উল্লেখকারী
  • কুকি

Chrome 72 থেকে শুরু করে, Set-Cookie রেসপন্স হেডার প্রদান করা হয় না এবং opt_extraInfoSpec-এ 'extraHeaders' নির্দিষ্ট না করে এটি পরিবর্তন বা সরানো যায় না।

Chrome 89 থেকে শুরু করে, opt_extraInfoSpec-এ 'extraHeaders' নির্দিষ্ট না করে X-Frame-Options রেসপন্স হেডার কার্যকরভাবে পরিবর্তন বা সরানো যাবে না।

এক্সটেনশনের হোস্ট অনুমতি অনুযায়ী, এটি যেসব অনুরোধ দেখার অনুমতি পেয়েছে, webRequest API শুধুমাত্র সেগুলিই দেখায়। এছাড়াও, শুধুমাত্র নিম্নলিখিত স্কিম অ্যাক্সেস করা যায়: http://, https://, ftp://, file://, ws:// (Chrome 58 থেকে), wss:// (Chrome 58 থেকে), urn: (Chrome 91 থেকে), অথবা chrome-extension://। এছাড়াও, উপরে উল্লেখ করা স্কিমের মধ্যে কোনও একটি ব্যবহার করে URL সহ নির্দিষ্ট কিছু অনুরোধ লুকিয়ে রাখা হয়। এর মধ্যে chrome-extension://other_extension_id অন্তর্ভুক্ত যেখানে other_extension_id অনুরোধ ম্যানেজ করার জন্য এক্সটেনশনের আইডি নয়, https://www.google.com/chrome এবং ব্রাউজার কার্যকারিতার মূল অন্যান্য সংবেদনশীল অনুরোধ। এছাড়াও, ডেডলক প্রতিরোধ করার জন্য আপনার এক্সটেনশন থেকে সিঙ্ক্রোনাস XMLHttpRequests ব্লকিং ইভেন্ট হ্যান্ডলার থেকে লুকানো হয়। মনে রাখবেন, কিছু কাজ করে এমন স্কিমের জন্য, উপলভ্য ইভেন্টের সেট সংশ্লিষ্ট প্রোটোকলের প্রকৃতির কারণে সীমিত হতে পারে। যেমন, file: স্কিমের জন্য, শুধু onBeforeRequest, onResponseStarted, onCompleted এবং onErrorOccurred ডিসপ্যাচ করা যেতে পারে।

Chrome 58 থেকে শুরু করে, webRequest API, WebSocket হ্যান্ডশেক অনুরোধ ইন্টারসেপ্ট করাকে সাপোর্ট করে। যেহেতু হ্যান্ডশেক HTTP আপগ্রেড অনুরোধের মাধ্যমে করা হয়, তাই এর ফ্লো HTTP-ভিত্তিক webRequest মডেলের সাথে মানানসই হয়। মনে রাখবেন যে API এগুলি ইন্টারসেপ্ট করে না:

  • প্রতিষ্ঠিত WebSocket কানেকশনের মাধ্যমে পাঠানো স্বতন্ত্র মেসেজ।
  • WebSocket কানেকশন বন্ধ করা হচ্ছে।

WebSocket অনুরোধের জন্য রিডাইরেক্ট কাজ করে না।

Chrome 72 থেকে, কোনও এক্সটেনশন তখনই অনুরোধ ইন্টারসেপ্ট করতে পারবে যখন অনুরোধ করা URL এবং অনুরোধের ইনিশিয়েটর, উভয়েরই হোস্ট সংক্রান্ত অনুমতি থাকবে।

Chrome 96 থেকে শুরু করে, webRequest API, HTTP/3 হ্যান্ডশেক অনুরোধের মাধ্যমে WebTransport ইন্টারসেপ্ট করাকে সাপোর্ট করে। যেহেতু HTTP CONNECT অনুরোধের মাধ্যমে হ্যান্ডশেক করা হয়, তাই এর ফ্লো HTTP-ভিত্তিক webRequest মডেলে ফিট করে। মনে রাখবেন:

  • সেশন শুরু হয়ে গেলে, এক্সটেনশন সেশনটি পর্যবেক্ষণ করতে বা হস্তক্ষেপ করতে পারে না webRequest API-এর মাধ্যমে।
  • onBeforeSendHeaders-এ HTTP অনুরোধ হেডার পরিবর্তন করা এড়িয়ে যাওয়া হয়েছে।
  • HTTP/3-এর মাধ্যমে WebTransport-এ রিডাইরেক্ট ও যাচাইকরণ কাজ করে না।

অনুরোধ আইডি

প্রতিটি অনুরোধ একটি অনুরোধ আইডি দ্বারা চিহ্নিত করা হয়। এই আইডি ব্রাউজার সেশন এবং এক্সটেনশনের প্রসঙ্গে অনন্য। এটি অনুরোধের লাইফ সাইকেল চলাকালীন অপরিবর্তিত থাকে এবং একই অনুরোধের জন্য ইভেন্ট ম্যাচ করতে ব্যবহার করা যেতে পারে। মনে রাখবেন, HTTP রিডাইরেকশন বা HTTP যাচাইকরণের ক্ষেত্রে একাধিক HTTP অনুরোধ একটি ওয়েব অনুরোধে ম্যাপ করা হয়।

ইভেন্ট লিসনার রেজিস্টার করা হচ্ছে

ওয়েব রিকোয়েস্টের জন্য ইভেন্ট লিসেনার রেজিস্টার করতে, আপনি সাধারণ addListener() ফাংশন-এর একটি ভেরিয়েশন ব্যবহার করেন। কলব্যাক ফাংশন নির্দিষ্ট করার পাশাপাশি, আপনাকে একটি ফিল্টার আর্গুমেন্ট নির্দিষ্ট করতে হবে এবং আপনি একটি ঐচ্ছিক অতিরিক্ত তথ্য আর্গুমেন্ট নির্দিষ্ট করতে পারেন।

ওয়েব রিকোয়েস্ট API-এর addListener() তিনটি আর্গুমেন্টের নিম্নলিখিত সংজ্ঞা আছে:

var callback = function(details) {...};
var filter = {...};
var opt_extraInfoSpec = [...];

onBeforeRequest ইভেন্ট শোনার একটি উদাহরণ এখানে দেওয়া হল:

browser.webRequest.onBeforeRequest.addListener(
    callback, filter, opt_extraInfoSpec);

প্রতিটি addListener() কল প্রথম প্যারামিটার হিসেবে একটি বাধ্যতামূলক কলব্যাক ফাংশন নেয়। এই কলব্যাক ফাংশনটি বর্তমান URL অনুরোধ সম্পর্কে তথ্য সহ একটি ডিকশনারি পাস করে। এই ডিকশনারিতে থাকা তথ্য নির্দিষ্ট ইভেন্টের ধরন এবং opt_extraInfoSpec-এর কন্টেন্টের উপর নির্ভর করে।

ঐচ্ছিক opt_extraInfoSpec অ্যারেতে 'blocking' স্ট্রিং থাকলে (শুধুমাত্র নির্দিষ্ট ইভেন্টের জন্য অনুমোদিত), কলব্যাক ফাংশন সিঙ্ক্রোনাসভাবে ম্যানেজ করা হয়। এর অর্থ হল, কলব্যাক ফাংশন রিটার্ন না করা পর্যন্ত অনুরোধটি ব্লক করা থাকে। এই ক্ষেত্রে, কলব্যাক একটি webRequest.BlockingResponse ফিরিয়ে দিতে পারে যা অনুরোধের পরবর্তী লাইফ সাইকেল নির্ধারণ করে। প্রসঙ্গের উপর নির্ভর করে, এই রেসপন্স কোনও অনুরোধ বাতিল বা রিডাইরেক্ট (onBeforeRequest), কোনও অনুরোধ বাতিল বা হেডার পরিবর্তন (onBeforeSendHeaders, onHeadersReceived) এবং কোনও অনুরোধ বাতিল বা যাচাইকরণ সংক্রান্ত ক্রেডেনশিয়াল প্রদান (onAuthRequired) করার অনুমতি দেয়।

ঐচ্ছিক opt_extraInfoSpec অ্যারেতে যদি পরিবর্তে 'asyncBlocking' স্ট্রিং থাকে (শুধুমাত্র onAuthRequired-এর জন্য অনুমোদিত), তাহলে এক্সটেনশনটি অ্যাসিঙ্ক্রোনাসভাবে webRequest.BlockingResponse জেনারেট করতে পারে।

webRequest.RequestFilter filter-এর মাধ্যমে বিভিন্ন ডাইমেনশনে ইভেন্ট ট্রিগার করার জন্য অনুরোধের সংখ্যা সীমিত করা যায়:

ইউআরএল
URL প্যাটার্ন যেমন *://www.google.com/foo*bar।
ধরন
অনুরোধের ধরন যেমন main_frame (টপ-লেভেল ফ্রেমের জন্য লোড করা ডকুমেন্ট), sub_frame (এম্বেড করা ফ্রেমের জন্য লোড করা ডকুমেন্ট) এবং image (ওয়েবসাইটে দেখানো ছবি)। webRequest.RequestFilter দেখুন।
ট্যাব আইডি
একটি ট্যাবের শনাক্তকারী।
উইন্ডো আইডি
উইন্ডোর জন্য শনাক্তকারী।

ইভেন্টের ধরনের উপর নির্ভর করে, আপনি অনুরোধ সম্পর্কে অতিরিক্ত তথ্য চাইতে opt_extraInfoSpec-এ স্ট্রিং নির্দিষ্ট করতে পারেন। এটি শুধুমাত্র অনুরোধের ডেটার উপর বিস্তারিত তথ্য প্রদান করতে ব্যবহৃত হয় যদি স্পষ্টভাবে অনুরোধ করা হয়।

যাচাইকরণ ম্যানেজ করা

HTTP যাচাইকরণের অনুরোধ ম্যানেজ করতে, আপনার ম্যানিফেস্ট ফাইলে "webRequestAuthProvider" অনুমতি যোগ করুন:

{
  "permissions": [
    "webRequest",
    "webRequestAuthProvider"
  ]
}

মনে রাখবেন যে "webRequestBlocking" অনুমতি সহ নীতি দ্বারা ইনস্টল করা এক্সটেনশনের জন্য এই অনুমতির প্রয়োজন নেই।

সিঙ্ক্রোনাসভাবে ক্রেডেনশিয়াল প্রদান করতে:

browser.webRequest.onAuthRequired.addListener((details) => {
    return {
      authCredentials: {
        username: 'guest',
        password: 'guest'
      }
    };
  },
  { urls: ['https://httpbin.org/basic-auth/guest/guest'] },
  ['blocking']
);

অ্যাসিঙ্ক্রোনাসভাবে ক্রেডেনশিয়াল প্রদান করতে:

browser.webRequest.onAuthRequired.addListener((details, callback) => {
    callback({
      authCredentials: {
        username: 'guest',
        password: 'guest'
      }
    });
  },
  { urls: ['https://httpbin.org/basic-auth/guest/guest'] },
  ['asyncBlocking']
);

বাস্তবায়ন সংক্রান্ত বিবরণ

ওয়েব রিকোয়েস্ট API ব্যবহার করে এমন এক্সটেনশন ডেভেলপ করার সময়, প্রয়োগ সংক্রান্ত বিভিন্ন বিবরণ বোঝা গুরুত্বপূর্ণ হতে পারে:

web_accessible_resources

কোনও এক্সটেনশন যখন কোনও সর্বজনীন রিসোর্স অনুরোধকে এমন একটি রিসোর্সে রিডাইরেক্ট করতে webRequest API ব্যবহার করে যা ওয়েব অ্যাক্সেসযোগ্য নয়, তখন এটি ব্লক করা হয় এবং এর ফলে একটি ত্রুটি দেখা দেয়। ওয়েব অ্যাক্সেসযোগ্য নয় এমন রিসোর্স রিডাইরেক্ট করা এক্সটেনশনের মালিকানাধীন হলেও উপরের তথ্যটি সত্য। declarativeWebRequest API-এর সাথে ব্যবহার করার জন্য রিসোর্স ঘোষণা করতে, "web_accessible_resources" অ্যারে অবশ্যই ঘোষণা করতে হবে এবং ম্যানিফেস্টে এখানে ডকুমেন্ট করা হিসাবে পপুলেট করতে হবে।

দ্বন্দ্ব সমাধান

ওয়েব রিকোয়েস্ট API-এর বর্তমান ইমপ্লিমেন্টেশনে, অন্তত একটি এক্সটেনশন অনুরোধ বাতিল করার নির্দেশ দিলে, অনুরোধটি বাতিল বলে গণ্য করা হয়। কোনও এক্সটেনশন অনুরোধ বাতিল করলে, সব এক্সটেনশনকে onErrorOccurred ইভেন্টের মাধ্যমে জানানো হয়। একবারে শুধুমাত্র একটি এক্সটেনশন অনুরোধ রিডাইরেক্ট করতে বা হেডার পরিবর্তন করতে পারে। একাধিক এক্সটেনশন অনুরোধ পরিবর্তন করার চেষ্টা করলে, সবচেয়ে সম্প্রতি ইনস্টল করা এক্সটেনশনটি কাজ করে এবং বাকিগুলি উপেক্ষা করা হয়। কোনও এক্সটেনশনকে বিজ্ঞপ্তি পাঠানো হয় না যদি পরিবর্তন বা রিডাইরেক্ট করার জন্য এটির নির্দেশ উপেক্ষা করা হয়।

ক্যাশ করা হচ্ছে

Chrome দুটি ক্যাশে ব্যবহার করে—একটি অন-ডিস্ক ক্যাশে এবং একটি খুব দ্রুত ইন-মেমরি ক্যাশে। ইন-মেমরি ক্যাশের লাইফটাইম রেন্ডার প্রসেসের লাইফটাইমের সাথে অ্যাটাচ করা থাকে, যা মোটামুটি একটি ট্যাবের সাথে সম্পর্কিত। ইন-মেমরি ক্যাশে থেকে উত্তর দেওয়া অনুরোধগুলি ওয়েব রিকোয়েস্ট API-তে দেখা যায় না। কোনও অনুরোধ হ্যান্ডলার তার আচরণ পরিবর্তন করলে (যেমন, যে আচরণ অনুযায়ী অনুরোধ ব্লক করা হয়), পৃষ্ঠাটি রিফ্রেশ করলে এই পরিবর্তিত আচরণটি নাও মানা হতে পারে। আচরণে পরিবর্তন হয়েছে কিনা তা নিশ্চিত করতে, ইন-মেমরি ক্যাশে ফ্লাশ করতে handlerBehaviorChanged() কল করুন। তবে এটি ঘন ঘন করবেন না; ক্যাশে ফ্লাশ করা একটি খুব ব্যয়বহুল অপারেশন। ইভেন্ট লিসেনার রেজিস্টার বা আনরেজিস্টার করার পরে আপনাকে handlerBehaviorChanged() কল করতে হবে না।

টাইমস্ট্যাম্প

ওয়েব রিকোয়েস্ট ইভেন্টের timestamp প্রপার্টি শুধুমাত্র অভ্যন্তরীণভাবে সামঞ্জস্যপূর্ণ হওয়ার গ্যারেন্টি দেওয়া হয়। একটি ইভেন্টের সাথে অন্য ইভেন্টের তুলনা করলে আপনি তাদের মধ্যে সঠিক অফসেট পাবেন, তবে এক্সটেনশনের মধ্যে বর্তমান সময়ের সাথে তাদের তুলনা করলে (উদাহরণস্বরূপ, (new Date()).getTime()-এর মাধ্যমে) অপ্রত্যাশিত ফলাফল দিতে পারে।

সমস্যা ম্যানেজ করা

আপনি ভুল আর্গুমেন্ট দিয়ে কোনও ইভেন্ট রেজিস্টার করার চেষ্টা করলে, জাভাস্ক্রিপ্ট সংক্রান্ত সমস্যা দেখানো হবে এবং ইভেন্ট হ্যান্ডলার রেজিস্টার করা হবে না। কোনও ইভেন্ট ম্যানেজ করার সময় কোনও সমস্যা হলে অথবা কোনও ইভেন্ট হ্যান্ডলার ভুল ব্লকিং রেসপন্স পাঠালে, আপনার এক্সটেনশনের কনসোলে একটি ত্রুটি মেসেজ লগ করা হয় এবং সেই অনুরোধের জন্য হ্যান্ডলারকে উপেক্ষা করা হয়।

উদাহরণ

www.evil.com-এ সব অনুরোধ কীভাবে ব্লক করতে হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

browser.webRequest.onBeforeRequest.addListener(
  function(details) {
    return {cancel: details.url.indexOf("://www.evil.com/") != -1};
  },
  {urls: ["<all_urls>"]},
  ["blocking"]
);

যেহেতু এই ফাংশনটি একটি ব্লকিং ইভেন্ট হ্যান্ডলার ব্যবহার করে, তাই এর জন্য ম্যানিফেস্ট ফাইলে "webRequest" এবং "webRequestBlocking" অনুমতির প্রয়োজন হয়।

নিম্নলিখিত উদাহরণটি আরও দক্ষ উপায়ে একই লক্ষ্য অর্জন করে কারণ যেসব অনুরোধ www.evil.com-এ টার্গেট করা হয়নি সেগুলি এক্সটেনশনে পাস করার প্রয়োজন নেই:

browser.webRequest.onBeforeRequest.addListener(
  function(details) { return {cancel: true}; },
  {urls: ["*://www.evil.com/*"]},
  ["blocking"]
);

সব অনুরোধ থেকে কীভাবে ইউজার-এজেন্ট হেডার মুছতে হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

browser.webRequest.onBeforeSendHeaders.addListener(
  function(details) {
    for (var i = 0; i < details.requestHeaders.length; ++i) {
      if (details.requestHeaders[i].name === 'User-Agent') {
        details.requestHeaders.splice(i, 1);
        break;
      }
    }
    return {requestHeaders: details.requestHeaders};
  },
  {urls: ["<all_urls>"]},
  ["blocking", "requestHeaders"]
);

browser.webRequest API ব্যবহার করে দেখতে, chrome-extension-samples রিপোজিটরি থেকে webRequest স্যাম্পেল ইনস্টল করুন।

ধরন

BlockingResponse

'ব্লকিং' extraInfoSpec প্রয়োগ করা আছে এমন ইভেন্ট হ্যান্ডলারের জন্য ভ্যালু রিটার্ন করে। ইভেন্ট হ্যান্ডলারকে নেটওয়ার্ক অনুরোধ পরিবর্তন করার অনুমতি দেয়।

প্রপার্টি

  • authCredentials

    অবজেক্ট ঐচ্ছিক

    শুধুমাত্র onAuthRequired ইভেন্টের উত্তর হিসেবে ব্যবহার করা হয়। সেট করা থাকলে, প্রদত্ত ক্রেডেনশিয়াল ব্যবহার করে অনুরোধ করা হয়।

    • পাসওয়ার্ড

      স্ট্রিং

    • ইউজারনেম

      স্ট্রিং

  • বাতিল করুন

    বুলিয়ান ঐচ্ছিক

    সত্য হলে, অনুরোধ বাতিল করা হয়। এটি অনুরোধ পাঠানো থেকে আটকায়। এটি onBeforeRequest, onBeforeSendHeaders, onHeadersReceived এবং onAuthRequired ইভেন্টের উত্তর হিসেবে ব্যবহার করা যেতে পারে।

  • redirectUrl

    স্ট্রিং ঐচ্ছিক

    শুধুমাত্র onBeforeRequest এবং onHeadersReceived ইভেন্টের উত্তর হিসেবে ব্যবহার করা হয়। এটি সেট করা থাকলে, আসল অনুরোধ পাঠানো/সম্পূর্ণ করা থেকে আটকানো হয় এবং তার পরিবর্তে প্রদত্ত URL-এ রিডাইরেক্ট করা হয়। data:-এর মতো নন-HTTP স্কিমে রিডাইরেক্ট করার অনুমতি দেওয়া হয়। রিডাইরেক্ট অ্যাকশনের মাধ্যমে শুরু করা রিডাইরেক্ট, রিডাইরেক্টের জন্য আসল অনুরোধের পদ্ধতি ব্যবহার করে, তবে একটি ব্যতিক্রম আছে: onHeadersReceived পর্যায়ে রিডাইরেক্ট শুরু হলে, GET পদ্ধতি ব্যবহার করে রিডাইরেক্ট ইস্যু করা হবে। ws:// এবং wss:// স্কিম সহ URL থেকে রিডাইরেক্ট উপেক্ষা করা হয়।

  • requestHeaders

    HttpHeaders ঐচ্ছিক

    শুধুমাত্র onBeforeSendHeaders ইভেন্টের উত্তর হিসেবে ব্যবহার করা হয়। সেট করা থাকলে, পরিবর্তে এই অনুরোধের হেডার সহ অনুরোধ করা হয়।

  • responseHeaders

    HttpHeaders ঐচ্ছিক

    শুধুমাত্র onHeadersReceived ইভেন্টের উত্তর হিসেবে ব্যবহার করা হয়। সেট করা থাকলে, সার্ভার এই রেসপন্স হেডারের সাথে উত্তর দিয়েছে বলে ধরে নেওয়া হয়। আপনি যদি সত্যিই দ্বন্দ্বের সংখ্যা সীমিত করার জন্য হেডারগুলি পরিবর্তন করতে চান তবেই responseHeaders রিটার্ন করুন (প্রতিটি অনুরোধের জন্য শুধুমাত্র একটি এক্সটেনশন responseHeaders পরিবর্তন করতে পারে)।

FormDataItem

Chrome 66+ Chrome 148 থেকে browser.*

ফর্ম ডেটার মধ্যে পাস করা ডেটা থাকে। urlএনকোড করা ফর্মের ক্ষেত্রে, ডেটা utf-8 স্ট্রিং হলে এটি স্ট্রিং হিসেবে এবং অন্যথায় ArrayBuffer হিসেবে স্টোর করা হয়। ফর্ম-ডেটার জন্য এটি ArrayBuffer। ফর্ম-ডেটা আপলোড করা ফাইলকে উপস্থাপন করলে, ফাইলের নাম দেওয়া থাকলে এটি ফাইলের নাম সহ স্ট্রিং হয়।

Enum

ArrayBuffer

স্ট্রিং

HttpHeaders

HTTP হেডারের একটি অ্যারে। প্রতিটি হেডারকে একটি ডিকশনারি হিসেবে দেখানো হয় যাতে name এবং value অথবা binaryValue কী থাকে।

ধরন

অবজেক্ট[]

প্রপার্টি

  • binaryValue

    number[] ঐচ্ছিক

    HTTP হেডারের ভ্যালু UTF-8-এর মাধ্যমে দেখানো না গেলে, সেটি স্বতন্ত্র বাইট ভ্যালু (০..২৫৫) হিসেবে সেভ করা হয়।

  • নাম

    স্ট্রিং

    HTTP হেডারের নাম।

  • মান

    স্ট্রিং ঐচ্ছিক

    HTTP হেডারের ভ্যালু, যদি এটি UTF-8 দ্বারা উপস্থাপন করা যায়।

IgnoredActionType

Chrome 70+ browser.* Chrome 148 থেকে

Enum

"রিডাইরেক্ট"

"request_headers"

"response_headers"

"auth_credentials"

OnAuthRequiredOptions

Chrome 44+ Chrome 148 থেকে browser.*

Enum

"responseHeaders"
ইভেন্টে রেসপন্স হেডার অন্তর্ভুক্ত করা উচিত কিনা তা নির্দিষ্ট করে।

"ব্লক করা"
কলব্যাক ফাংশন রিটার্ন না করা পর্যন্ত অনুরোধ ব্লক করা আছে বলে উল্লেখ করে।

"asyncBlocking"
কলব্যাক ফাংশন যে অ্যাসিঙ্ক্রোনাসভাবে ম্যানেজ করা হয় তা নির্দিষ্ট করে।

"extraHeaders"
নির্দিষ্ট করে যে হেডার ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) লঙ্ঘন করতে পারে।

OnBeforeRedirectOptions

Chrome 44+ Chrome 148 থেকে browser.*

Enum

"responseHeaders"
ইভেন্টে রেসপন্স হেডার অন্তর্ভুক্ত করা উচিত কিনা তা নির্দিষ্ট করে।

"extraHeaders"
নির্দিষ্ট করে যে হেডার ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) লঙ্ঘন করতে পারে।

OnBeforeRequestOptions

Chrome 44+ Chrome 148 থেকে browser.*

Enum

"ব্লক করা"
কলব্যাক ফাংশন রিটার্ন না করা পর্যন্ত অনুরোধ ব্লক করা আছে বলে উল্লেখ করে।

"requestBody"
অনুরোধের বডি ইভেন্টে অন্তর্ভুক্ত করা উচিত কিনা তা নির্দিষ্ট করে।

"extraHeaders"
নির্দিষ্ট করে যে হেডার ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) লঙ্ঘন করতে পারে।

OnBeforeSendHeadersOptions

Chrome 44+ Chrome 148 থেকে browser.*

Enum

"requestHeaders"
ইভেন্টে রিকোয়েস্ট হেডার অন্তর্ভুক্ত করা উচিত কিনা তা নির্দিষ্ট করে।

"ব্লক করা"
কলব্যাক ফাংশন রিটার্ন না করা পর্যন্ত অনুরোধ ব্লক করা আছে বলে উল্লেখ করে।

"extraHeaders"
নির্দিষ্ট করে যে হেডার ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) লঙ্ঘন করতে পারে।

OnCompletedOptions

Chrome 44+ Chrome 148 থেকে browser.*

Enum

"responseHeaders"
ইভেন্টে রেসপন্স হেডার অন্তর্ভুক্ত করা উচিত কিনা তা নির্দিষ্ট করে।

"extraHeaders"
নির্দিষ্ট করে যে হেডার ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) লঙ্ঘন করতে পারে।

OnErrorOccurredOptions

Chrome 79+ Chrome 148 থেকে browser.*

ভ্যালু

"extraHeaders"

OnHeadersReceivedOptions

Chrome 44+ Chrome 148 থেকে browser.*

Enum

"ব্লক করা"
কলব্যাক ফাংশন রিটার্ন না করা পর্যন্ত অনুরোধ ব্লক করা আছে বলে উল্লেখ করে।

"responseHeaders"
ইভেন্টে রেসপন্স হেডার অন্তর্ভুক্ত করা উচিত কিনা তা নির্দিষ্ট করে।

"extraHeaders"
নির্দিষ্ট করে যে হেডার ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) লঙ্ঘন করতে পারে।

"securityInfo"
ইভেন্টে SecurityInfo অন্তর্ভুক্ত করা উচিত কিনা তা নির্দিষ্ট করে।

"securityInfoRawDer"
সার্টিফিকেটের র বাইট সহ SecurityInfo ইভেন্টে অন্তর্ভুক্ত করা উচিত কিনা তা নির্দিষ্ট করে।

OnResponseStartedOptions

Chrome 44+ Chrome 148 থেকে browser.*

Enum

"responseHeaders"
ইভেন্টে রেসপন্স হেডার অন্তর্ভুক্ত করা উচিত কিনা তা নির্দিষ্ট করে।

"extraHeaders"
নির্দিষ্ট করে যে হেডার ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) লঙ্ঘন করতে পারে।

OnSendHeadersOptions

Chrome 44+ Chrome 148 থেকে browser.*

Enum

"requestHeaders"
ইভেন্টে রিকোয়েস্ট হেডার অন্তর্ভুক্ত করা উচিত কিনা তা নির্দিষ্ট করে।

"extraHeaders"
নির্দিষ্ট করে যে হেডার ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) লঙ্ঘন করতে পারে।

RequestFilter

webRequest ইভেন্টে প্রয়োগ করার জন্য ফিল্টার বর্ণনা করে এমন অবজেক্ট।

প্রপার্টি

  • tabId

    নম্বর ঐচ্ছিক

  • ধরন

    ResourceType[] ঐচ্ছিক

    অনুরোধের প্রকারের তালিকা। কোনও ধরনের সাথে ম্যাচ না করা অনুরোধ ফিল্টার করে বাদ দেওয়া হবে।

  • URL

    স্ট্রিং[]

    URL বা URL প্যাটার্নের তালিকা। কোনও URL-এর সাথে ম্যাচ না করা অনুরোধ ফিল্টার করে বাদ দেওয়া হবে।

  • windowId

    নম্বর ঐচ্ছিক

ResourceType

Chrome 44+ Chrome 148 থেকে browser.*

Enum

"main_frame"
রিসোর্সকে প্রধান ফ্রেম হিসেবে নির্দিষ্ট করে।

"sub_frame"
রিসোর্সকে সাব-ফ্রেম হিসেবে নির্দিষ্ট করে।

"স্টাইলশিট"
রিসোর্সকে স্টাইলশিট হিসেবে নির্দিষ্ট করে।

"স্ক্রিপ্ট"
রিসোর্সকে স্ক্রিপ্ট হিসেবে নির্দিষ্ট করে।

"image"
রিসোর্সকে ছবি হিসেবে নির্দিষ্ট করে।

"font"
রিসোর্সকে ফন্ট হিসেবে নির্দিষ্ট করে।

"অবজেক্ট"
রিসোর্সকে অবজেক্ট হিসেবে নির্দিষ্ট করে।

"xmlhttprequest"
রিসোর্সকে XMLHttpRequest হিসেবে নির্দিষ্ট করে।

"ping"
রিসোর্সকে পিং হিসেবে নির্দিষ্ট করে।

"csp_report"
রিসোর্সকে কন্টেন্ট নিরাপত্তা নীতি (CSP) রিপোর্ট হিসেবে নির্দিষ্ট করে।

"media"
রিসোর্সকে মিডিয়া অবজেক্ট হিসেবে নির্দিষ্ট করে।

"websocket"
রিসোর্সকে WebSocket হিসেবে নির্দিষ্ট করে।

"webbundle"
রিসোর্সকে WebBundle হিসেবে নির্দিষ্ট করে।

"অন্যান্য"
তালিকাভুক্ত ধরনের মধ্যে অন্তর্ভুক্ত নয় এমন ধরন হিসেবে রিসোর্স নির্দিষ্ট করে।

SecurityInfo

Chrome 144+ Chrome 148 থেকে browser.*

প্রপার্টি

  • সার্টিফিকেট

    অবজেক্ট[]

    সার্টিফিকেটের তালিকা

    • আঙ্গুলের ছাপ

      অবজেক্ট

      সার্টিফিকেটের ফিঙ্গারপ্রিন্ট।

      • sha256

        স্ট্রিং

        সার্টিফিকেটের sha256 ফিঙ্গারপ্রিন্ট।

    • rawDER

      ArrayBuffer ঐচ্ছিক

      DER এনকোড করা সার্ভার সার্টিফিকেটের র-বাইট

  • রাজ্য

    স্ট্রিং

    কানেকশনের স্ট্যাটাস। নিরাপদ, অসুরক্ষিত, ভাঙা এর মধ্যে যেকোনও একটি।

UploadData

URL অনুরোধে আপলোড করা ডেটা থাকে।

প্রপার্টি

  • বাইট

    যেকোনও ঐচ্ছিক

    ডেটার কপি সহ ArrayBuffer।

  • ফাইল

    স্ট্রিং ঐচ্ছিক

    ফাইলের পাথ ও নাম সহ স্ট্রিং।

প্রপার্টি

MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES

প্রতি ১০ মিনিটের ব্যবধানে handlerBehaviorChanged সর্বাধিক যতবার কল করা যেতে পারে। handlerBehaviorChanged হল একটি ব্যয়বহুল ফাংশন কল যা ঘন ঘন কল করা উচিত নয়।

ভ্যালু

২০

পদ্ধতি

handlerBehaviorChanged()

browser.webRequest.handlerBehaviorChanged(): Promise<void>

ক্যাশিংয়ের কারণে ভুল হ্যান্ডলিং প্রতিরোধ করতে webRequest হ্যান্ডলারের আচরণ পরিবর্তিত হলে কল করতে হবে। এই ফাংশন কলটি ব্যয়বহুল। এটি ঘনঘন কল করবেন না।

রিটার্ন

  • <void> প্রমিস

    Chrome 116+ Chrome 148 থেকে browser.*

ইভেন্ট

onActionIgnored

Chrome 70+ browser.* Chrome 148 থেকে
browser.webRequest.onActionIgnored.addListener(
  callback: function,
)

নেটওয়ার্ক অনুরোধে এক্সটেনশনের সাজেস্ট করা পরিবর্তন উপেক্ষা করা হলে ফায়ার করা হয়। অন্য এক্সটেনশনের সাথে সমস্যা হলে এটি ঘটে।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (details: object) => void

    • বিস্তারিত বিবরণ

      অবজেক্ট

      • অ্যাকশন

        প্রস্তাবিত অ্যাকশন যা উপেক্ষা করা হয়েছে।

      • requestId

        স্ট্রিং

        অনুরোধের আইডি। অনুরোধ আইডি ব্রাউজার সেশনে অনন্য। এর ফলে, একই অনুরোধের বিভিন্ন ইভেন্ট সম্পর্কিত করতে এগুলি ব্যবহার করা যেতে পারে।

onAuthRequired

browser.webRequest.onAuthRequired.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnAuthRequiredOptions[],
)

যাচাইকরণ ব্যর্থ হলে ফায়ার করা হয়। লিসনারের কাছে তিনটি বিকল্প আছে: এটি যাচাইকরণ সংক্রান্ত ক্রেডেনশিয়াল প্রদান করতে পারে, অনুরোধ বাতিল করে সমস্যা সংক্রান্ত পেজ দেখাতে পারে অথবা চ্যালেঞ্জের ব্যাপারে কোনও অ্যাকশন নাও নিতে পারে। ব্যবহারকারীর ভুল ক্রেডেনশিয়াল দেওয়া হলে, একই অনুরোধের জন্য এটি একাধিকবার কল করা হতে পারে। মনে রাখবেন, extraInfoSpec প্যারামিটারে 'blocking' বা 'asyncBlocking' মোডের মধ্যে যেকোনও একটি উল্লেখ করতে হবে।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (details: object, asyncCallback?: function) => BlockingResponse | undefined

    • বিস্তারিত বিবরণ

      অবজেক্ট

      • চ্যালেঞ্জার

        অবজেক্ট

        সার্ভার যাচাইকরণের অনুরোধ করছে।

        • হোস্ট

          স্ট্রিং

        • পোর্ট

          নম্বর

      • documentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        অনুরোধ করা ডকুমেন্টের UUID।

      • Chrome 106+ Chrome 148 থেকে browser.*

        ডকুমেন্টটি যে লাইফসাইকেলে রয়েছে।

      • frameId

        নম্বর

        0 ভ্যালু থেকে বোঝা যায় যে অনুরোধটি মূল ফ্রেমে করা হয়েছে; পজিটিভ ভ্যালু থেকে বোঝা যায় যে অনুরোধটি সাবফ্রেমের আইডিতে করা হয়েছে। (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হলে (type হল main_frame বা sub_frame), frameId এই ফ্রেমের আইডি দেখায়, বাইরের ফ্রেমের আইডি নয়। ফ্রেম আইডি একটি ট্যাবের মধ্যে অনন্য।

      • Chrome 106+ Chrome 148 থেকে browser.*

        যে ধরনের ফ্রেমে অনুরোধ করা হয়েছে।

      • ইনিশিয়েটর

        স্ট্রিং ঐচ্ছিক

        Chrome 63+ Chrome 148 থেকে browser.*

        যেখান থেকে অনুরোধটি শুরু করা হয়েছিল। রিডাইরেক্টের মাধ্যমে এটি পরিবর্তন হয় না। এটি যদি একটি অস্বচ্ছ উৎস হয়, তাহলে 'null' স্ট্রিং ব্যবহার করা হবে।

      • isProxy

        বুলিয়ান

        প্রক্সি-যাচাইকরণের জন্য True, WWW-যাচাইকরণের জন্য False।

      • মেথড

        স্ট্রিং

        স্ট্যান্ডার্ড HTTP পদ্ধতি।

      • parentDocumentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        এই ফ্রেমের মালিকানা থাকা পেরেন্ট ডকুমেন্টের UUID। অভিভাবক না থাকলে এটি সেট করা হয় না।

      • parentFrameId

        নম্বর

        অনুরোধ পাঠানো ফ্রেমকে যে ফ্রেম র‍্যাপ করে সেটির আইডি। কোনও পেরেন্ট ফ্রেম না থাকলে -১ হিসেবে সেট করুন।

      • রিয়েলম

        স্ট্রিং ঐচ্ছিক

        সার্ভার দ্বারা প্রদত্ত যাচাইকরণ রিয়েলম, যদি থাকে।

      • requestId

        স্ট্রিং

        অনুরোধের আইডি। অনুরোধ আইডি ব্রাউজার সেশনে অনন্য। এর ফলে, একই অনুরোধের বিভিন্ন ইভেন্ট সম্পর্কিত করতে এগুলি ব্যবহার করা যেতে পারে।

      • responseHeaders

        HttpHeaders ঐচ্ছিক

        এই উত্তরের সাথে পাওয়া HTTP রেসপন্স হেডার।

      • স্কিম

        স্ট্রিং

        যাচাইকরণ স্কিম, যেমন, বেসিক বা ডাইজেস্ট।

      • statusCode

        নম্বর

        Chrome 43+ ব্রাউজার।* Chrome 148 থেকে

        সার্ভার থেকে ফেরত পাঠানো স্ট্যান্ডার্ড HTTP স্ট্যাটাস কোড।

      • statusLine

        স্ট্রিং

        উত্তরের HTTP স্ট্যাটাস লাইন বা HTTP/0.9 উত্তরের জন্য 'HTTP/0.9 200 OK' স্ট্রিং (অর্থাৎ, যেসব উত্তরে স্ট্যাটাস লাইন নেই) অথবা কোনও হেডার না থাকলে খালি স্ট্রিং।

      • tabId

        নম্বর

        যে ট্যাবে অনুরোধ করা হয়েছে সেটির আইডি। অনুরোধটি কোনও ট্যাবের সাথে সম্পর্কিত না হলে -১-এ সেট করুন।

      • timeStamp

        নম্বর

        এই সিগন্যাল ট্রিগার হওয়ার সময়, যুগ থেকে মিলিসেকেন্ডে।

      • ধরন

        অনুরোধ করা রিসোর্স কীভাবে ব্যবহার করা হবে।

      • URL

        স্ট্রিং

    • asyncCallback

      ফাংশন ঐচ্ছিক

      Chrome 58+ Chrome 148 থেকে browser.*

      asyncCallback প্যারামিটারটি দেখতে এইরকম:

      (response: BlockingResponse) => void

    • ফেরত দেওয়া

      BlockingResponse | undefined

      "extraInfoSpec" প্যারামিটারে "ব্লকিং" নির্দিষ্ট করা থাকলে, ইভেন্ট লিসেনারকে এই ধরনের অবজেক্ট রিটার্ন করতে হবে।

  • ফিল্টার করুন
  • extraInfoSpec

    OnAuthRequiredOptions[] ঐচ্ছিক

onBeforeRedirect

browser.webRequest.onBeforeRedirect.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnBeforeRedirectOptions[],
)

সার্ভার-ইনিশিয়েটেড রিডাইরেক্ট হতে গেলে ফায়ার করা হয়।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (details: object) => void

    • বিস্তারিত বিবরণ

      অবজেক্ট

      • documentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        অনুরোধ করা ডকুমেন্টের UUID।

      • Chrome 106+ Chrome 148 থেকে browser.*

        ডকুমেন্টটি যে লাইফসাইকেলে রয়েছে।

      • frameId

        নম্বর

        0 ভ্যালু থেকে বোঝা যায় যে অনুরোধটি মূল ফ্রেমে করা হয়েছে; পজিটিভ ভ্যালু থেকে বোঝা যায় যে অনুরোধটি সাবফ্রেমের আইডিতে করা হয়েছে। (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হলে (type হল main_frame বা sub_frame), frameId এই ফ্রেমের আইডি দেখায়, বাইরের ফ্রেমের আইডি নয়। ফ্রেম আইডি একটি ট্যাবের মধ্যে অনন্য।

      • Chrome 106+ Chrome 148 থেকে browser.*

        যে ধরনের ফ্রেমে অনুরোধ করা হয়েছে।

      • fromCache

        বুলিয়ান

        এই উত্তর ডিস্ক ক্যাশে থেকে আনা হয়েছে কিনা তা দেখায়।

      • ইনিশিয়েটর

        স্ট্রিং ঐচ্ছিক

        Chrome 63+ Chrome 148 থেকে browser.*

        যেখান থেকে অনুরোধটি শুরু করা হয়েছিল। রিডাইরেক্টের মাধ্যমে এটি পরিবর্তন হয় না। এটি যদি একটি অস্বচ্ছ উৎস হয়, তাহলে 'null' স্ট্রিং ব্যবহার করা হবে।

      • ip

        স্ট্রিং ঐচ্ছিক

        অনুরোধটি আসলে যে সার্ভার IP অ্যাড্রেসে পাঠানো হয়েছে। মনে রাখবেন যে এটি আক্ষরিক IPv6 অ্যাড্রেস হতে পারে।

      • মেথড

        স্ট্রিং

        স্ট্যান্ডার্ড HTTP পদ্ধতি।

      • parentDocumentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        এই ফ্রেমের মালিকানা থাকা পেরেন্ট ডকুমেন্টের UUID। অভিভাবক না থাকলে এটি সেট করা হয় না।

      • parentFrameId

        নম্বর

        অনুরোধ পাঠানো ফ্রেমকে যে ফ্রেম র‍্যাপ করে সেটির আইডি। কোনও পেরেন্ট ফ্রেম না থাকলে -১ হিসেবে সেট করুন।

      • redirectUrl

        স্ট্রিং

        নতুন URL।

      • requestId

        স্ট্রিং

        অনুরোধের আইডি। অনুরোধ আইডি ব্রাউজার সেশনে অনন্য। এর ফলে, একই অনুরোধের বিভিন্ন ইভেন্ট সম্পর্কিত করতে এগুলি ব্যবহার করা যেতে পারে।

      • responseHeaders

        HttpHeaders ঐচ্ছিক

        এই রিডাইরেক্টের সাথে পাওয়া HTTP রেসপন্স হেডার।

      • statusCode

        নম্বর

        সার্ভার থেকে ফেরত পাঠানো স্ট্যান্ডার্ড HTTP স্ট্যাটাস কোড।

      • statusLine

        স্ট্রিং

        উত্তরের HTTP স্ট্যাটাস লাইন বা HTTP/0.9 উত্তরের জন্য 'HTTP/0.9 200 OK' স্ট্রিং (অর্থাৎ, যেসব উত্তরে স্ট্যাটাস লাইন নেই) অথবা কোনও হেডার না থাকলে খালি স্ট্রিং।

      • tabId

        নম্বর

        যে ট্যাবে অনুরোধ করা হয়েছে সেটির আইডি। অনুরোধটি কোনও ট্যাবের সাথে সম্পর্কিত না হলে -১-এ সেট করুন।

      • timeStamp

        নম্বর

        এই সিগন্যাল ট্রিগার হওয়ার সময়, যুগ থেকে মিলিসেকেন্ডে।

      • ধরন

        অনুরোধ করা রিসোর্স কীভাবে ব্যবহার করা হবে।

      • URL

        স্ট্রিং

  • ফিল্টার করুন
  • extraInfoSpec

    OnBeforeRedirectOptions[] ঐচ্ছিক

onBeforeRequest

browser.webRequest.onBeforeRequest.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnBeforeRequestOptions[],
)

অনুরোধ করা হলে ফায়ার করা হয়।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (details: object) => BlockingResponse | undefined

    • বিস্তারিত বিবরণ

      অবজেক্ট

      • documentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        অনুরোধ করা ডকুমেন্টের UUID।

      • documentLifecycle
        Chrome 106+ Chrome 148 থেকে browser.*

        ডকুমেন্টটি যে লাইফসাইকেলে রয়েছে।

      • frameId

        নম্বর

        0 ভ্যালু থেকে বোঝা যায় যে অনুরোধটি মূল ফ্রেমে করা হয়েছে; পজিটিভ ভ্যালু থেকে বোঝা যায় যে অনুরোধটি সাবফ্রেমের আইডিতে করা হয়েছে। (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হলে (type হল main_frame বা sub_frame), frameId এই ফ্রেমের আইডি দেখায়, বাইরের ফ্রেমের আইডি নয়। ফ্রেম আইডি একটি ট্যাবের মধ্যে অনন্য।

      • frameType

        extensionTypes.FrameType ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        যে ধরনের ফ্রেমে অনুরোধ করা হয়েছে।

      • ইনিশিয়েটর

        স্ট্রিং ঐচ্ছিক

        Chrome 63+ Chrome 148 থেকে browser.*

        যেখান থেকে অনুরোধটি শুরু করা হয়েছিল। রিডাইরেক্টের মাধ্যমে এটি পরিবর্তন হয় না। এটি যদি একটি অস্বচ্ছ উৎস হয়, তাহলে 'null' স্ট্রিং ব্যবহার করা হবে।

      • মেথড

        স্ট্রিং

        স্ট্যান্ডার্ড HTTP পদ্ধতি।

      • parentDocumentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        এই ফ্রেমের মালিকানা থাকা পেরেন্ট ডকুমেন্টের UUID। অভিভাবক না থাকলে এটি সেট করা হয় না।

      • parentFrameId

        নম্বর

        অনুরোধ পাঠানো ফ্রেমকে যে ফ্রেম র‍্যাপ করে সেটির আইডি। কোনও পেরেন্ট ফ্রেম না থাকলে -১ হিসেবে সেট করুন।

      • requestBody

        অবজেক্ট ঐচ্ছিক

        HTTP অনুরোধের বডি ডেটা থাকে। extraInfoSpec-এ 'requestBody' থাকলে তবেই এটি প্রদান করা হয়।

        • সমস্যা

          স্ট্রিং ঐচ্ছিক

          অনুরোধের বডি ডেটা পাওয়ার সময় সমস্যা হয়েছে।

        • formData

          অবজেক্ট ঐচ্ছিক

          অনুরোধের পদ্ধতি POST হলে এবং বডি UTF8-এ এনকোড করা কী-ভ্যালু পেয়ারের ক্রম হলে, multipart/form-data বা application/x-www-form-urlencoded হিসেবে এনকোড করা হলে, এই ডিকশনারি থাকে এবং প্রতিটি কী-এর জন্য সেই কী-এর সব ভ্যালুর তালিকা থাকে। ডেটা অন্য কোনও মিডিয়া ধরনের হলে বা সেটি বিকৃত হলে, ডিকশনারি থাকে না। এই ডিকশনারির ভ্যালুর উদাহরণ হল {'key': ['value1', 'value2']}।

        • র

          UploadData[] ঐচ্ছিক

          অনুরোধের পদ্ধতি PUT বা POST হলে এবং formData-তে বডি আগে থেকে পার্স করা না থাকলে, পার্স না করা অনুরোধের বডি এলিমেন্ট এই অ্যারেতে থাকে।

      • requestId

        স্ট্রিং

        অনুরোধের আইডি। অনুরোধ আইডি ব্রাউজার সেশনে অনন্য। এর ফলে, একই অনুরোধের বিভিন্ন ইভেন্ট সম্পর্কিত করতে এগুলি ব্যবহার করা যেতে পারে।

      • tabId

        নম্বর

        যে ট্যাবে অনুরোধ করা হয়েছে সেটির আইডি। অনুরোধটি কোনও ট্যাবের সাথে সম্পর্কিত না হলে -১-এ সেট করুন।

      • timeStamp

        নম্বর

        এই সিগন্যাল ট্রিগার হওয়ার সময়, যুগ থেকে মিলিসেকেন্ডে।

      • ধরন

        অনুরোধ করা রিসোর্স কীভাবে ব্যবহার করা হবে।

      • URL

        স্ট্রিং

    • ফেরত দেওয়া

      BlockingResponse | undefined

      "extraInfoSpec" প্যারামিটারে "ব্লকিং" নির্দিষ্ট করা থাকলে, ইভেন্ট লিসেনারকে এই ধরনের অবজেক্ট রিটার্ন করতে হবে।

  • ফিল্টার করুন
  • extraInfoSpec

    OnBeforeRequestOptions[] ঐচ্ছিক

onBeforeSendHeaders

browser.webRequest.onBeforeSendHeaders.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnBeforeSendHeadersOptions[],
)

HTTP অনুরোধ পাঠানোর আগে, অনুরোধের হেডার উপলভ্য হলে একবার ফায়ার করা হয়। সার্ভারে TCP কানেকশন তৈরি হওয়ার পরে কিন্তু কোনও HTTP ডেটা পাঠানোর আগে এটি হতে পারে।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (details: object) => BlockingResponse | undefined

    • বিস্তারিত বিবরণ

      অবজেক্ট

      • documentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        অনুরোধ করা ডকুমেন্টের UUID।

      • Chrome 106+ Chrome 148 থেকে browser.*

        ডকুমেন্টটি যে লাইফসাইকেলে রয়েছে।

      • frameId

        নম্বর

        0 ভ্যালু থেকে বোঝা যায় যে অনুরোধটি মূল ফ্রেমে করা হয়েছে; পজিটিভ ভ্যালু থেকে বোঝা যায় যে অনুরোধটি সাবফ্রেমের আইডিতে করা হয়েছে। (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হলে (type হল main_frame বা sub_frame), frameId এই ফ্রেমের আইডি দেখায়, বাইরের ফ্রেমের আইডি নয়। ফ্রেম আইডি একটি ট্যাবের মধ্যে অনন্য।

      • Chrome 106+ Chrome 148 থেকে browser.*

        যে ধরনের ফ্রেমে অনুরোধ করা হয়েছে।

      • ইনিশিয়েটর

        স্ট্রিং ঐচ্ছিক

        Chrome 63+ Chrome 148 থেকে browser.*

        যেখান থেকে অনুরোধটি শুরু করা হয়েছিল। রিডাইরেক্টের মাধ্যমে এটি পরিবর্তন হয় না। এটি যদি একটি অস্বচ্ছ উৎস হয়, তাহলে 'null' স্ট্রিং ব্যবহার করা হবে।

      • মেথড

        স্ট্রিং

        স্ট্যান্ডার্ড HTTP পদ্ধতি।

      • parentDocumentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        এই ফ্রেমের মালিকানা থাকা পেরেন্ট ডকুমেন্টের UUID। অভিভাবক না থাকলে এটি সেট করা হয় না।

      • parentFrameId

        নম্বর

        অনুরোধ পাঠানো ফ্রেমকে যে ফ্রেম র‍্যাপ করে সেটির আইডি। কোনও পেরেন্ট ফ্রেম না থাকলে -১ হিসেবে সেট করুন।

      • requestHeaders

        HttpHeaders ঐচ্ছিক

        এই অনুরোধের সাথে যে HTTP অনুরোধ হেডার পাঠানো হবে।

      • requestId

        স্ট্রিং

        অনুরোধের আইডি। অনুরোধ আইডি ব্রাউজার সেশনে অনন্য। এর ফলে, একই অনুরোধের বিভিন্ন ইভেন্ট সম্পর্কিত করতে এগুলি ব্যবহার করা যেতে পারে।

      • tabId

        নম্বর

        যে ট্যাবে অনুরোধ করা হয়েছে সেটির আইডি। অনুরোধটি কোনও ট্যাবের সাথে সম্পর্কিত না হলে -১-এ সেট করুন।

      • timeStamp

        নম্বর

        এই সিগন্যাল ট্রিগার হওয়ার সময়, যুগ থেকে মিলিসেকেন্ডে।

      • ধরন

        অনুরোধ করা রিসোর্স কীভাবে ব্যবহার করা হবে।

      • URL

        স্ট্রিং

    • ফেরত দেওয়া

      BlockingResponse | undefined

      "extraInfoSpec" প্যারামিটারে "ব্লকিং" নির্দিষ্ট করা থাকলে, ইভেন্ট লিসেনারকে এই ধরনের অবজেক্ট রিটার্ন করতে হবে।

  • ফিল্টার করুন
  • extraInfoSpec

    OnBeforeSendHeadersOptions[] ঐচ্ছিক

onCompleted

browser.webRequest.onCompleted.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnCompletedOptions[],
)

অনুরোধ সম্পূর্ণ হলে ফায়ার করা হয়।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (details: object) => void

    • বিস্তারিত বিবরণ

      অবজেক্ট

      • documentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        অনুরোধ করা ডকুমেন্টের UUID।

      • Chrome 106+ Chrome 148 থেকে browser.*

        ডকুমেন্টটি যে লাইফসাইকেলে রয়েছে।

      • frameId

        নম্বর

        0 ভ্যালু থেকে বোঝা যায় যে অনুরোধটি মূল ফ্রেমে করা হয়েছে; পজিটিভ ভ্যালু থেকে বোঝা যায় যে অনুরোধটি সাবফ্রেমের আইডিতে করা হয়েছে। (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হলে (type হল main_frame বা sub_frame), frameId এই ফ্রেমের আইডি দেখায়, বাইরের ফ্রেমের আইডি নয়। ফ্রেম আইডি একটি ট্যাবের মধ্যে অনন্য।

      • Chrome 106+ Chrome 148 থেকে browser.*

        যে ধরনের ফ্রেমে অনুরোধ করা হয়েছে।

      • fromCache

        বুলিয়ান

        এই উত্তর ডিস্ক ক্যাশে থেকে আনা হয়েছে কিনা তা দেখায়।

      • ইনিশিয়েটর

        স্ট্রিং ঐচ্ছিক

        Chrome 63+ Chrome 148 থেকে browser.*

        যেখান থেকে অনুরোধটি শুরু করা হয়েছিল। রিডাইরেক্টের মাধ্যমে এটি পরিবর্তন হয় না। এটি যদি একটি অস্বচ্ছ উৎস হয়, তাহলে 'null' স্ট্রিং ব্যবহার করা হবে।

      • ip

        স্ট্রিং ঐচ্ছিক

        অনুরোধটি আসলে যে সার্ভার IP অ্যাড্রেসে পাঠানো হয়েছে। মনে রাখবেন যে এটি আক্ষরিক IPv6 অ্যাড্রেস হতে পারে।

      • মেথড

        স্ট্রিং

        স্ট্যান্ডার্ড HTTP পদ্ধতি।

      • parentDocumentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        এই ফ্রেমের মালিকানা থাকা পেরেন্ট ডকুমেন্টের UUID। অভিভাবক না থাকলে এটি সেট করা হয় না।

      • parentFrameId

        নম্বর

        অনুরোধ পাঠানো ফ্রেমকে যে ফ্রেম র‍্যাপ করে সেটির আইডি। কোনও পেরেন্ট ফ্রেম না থাকলে -১ হিসেবে সেট করুন।

      • requestId

        স্ট্রিং

        অনুরোধের আইডি। অনুরোধ আইডি ব্রাউজার সেশনে অনন্য। এর ফলে, একই অনুরোধের বিভিন্ন ইভেন্ট সম্পর্কিত করতে এগুলি ব্যবহার করা যেতে পারে।

      • responseHeaders

        HttpHeaders ঐচ্ছিক

        এই উত্তরের সাথে পাওয়া HTTP রেসপন্স হেডার।

      • statusCode

        নম্বর

        সার্ভার থেকে ফেরত পাঠানো স্ট্যান্ডার্ড HTTP স্ট্যাটাস কোড।

      • statusLine

        স্ট্রিং

        উত্তরের HTTP স্ট্যাটাস লাইন বা HTTP/0.9 উত্তরের জন্য 'HTTP/0.9 200 OK' স্ট্রিং (অর্থাৎ, যেসব উত্তরে স্ট্যাটাস লাইন নেই) অথবা কোনও হেডার না থাকলে খালি স্ট্রিং।

      • tabId

        নম্বর

        যে ট্যাবে অনুরোধ করা হয়েছে সেটির আইডি। অনুরোধটি কোনও ট্যাবের সাথে সম্পর্কিত না হলে -১-এ সেট করুন।

      • timeStamp

        নম্বর

        এই সিগন্যাল ট্রিগার হওয়ার সময়, যুগ থেকে মিলিসেকেন্ডে।

      • ধরন

        অনুরোধ করা রিসোর্স কীভাবে ব্যবহার করা হবে।

      • URL

        স্ট্রিং

  • ফিল্টার করুন
  • extraInfoSpec

    OnCompletedOptions[] ঐচ্ছিক

onErrorOccurred

browser.webRequest.onErrorOccurred.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnErrorOccurredOptions[],
)

কোনও সমস্যা হলে ফায়ার করা হয়।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (details: object) => void

    • বিস্তারিত বিবরণ

      অবজেক্ট

      • documentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        অনুরোধ করা ডকুমেন্টের UUID। অনুরোধটি কোনও ফ্রেমের নেভিগেশন হলে এই মানটি উপস্থিত থাকে না।

      • Chrome 106+ Chrome 148 থেকে browser.*

        ডকুমেন্টটি যে লাইফসাইকেলে রয়েছে।

      • সমস্যা

        স্ট্রিং

        সমস্যার বিবরণ। এই স্ট্রিংটি রিলিজের মধ্যে ব্যাকওয়ার্ড কম্প্যাটিবল থাকার কোনও গ্যারেন্টি নেই। আপনি এর কন্টেন্ট পার্স করতে এবং তার ভিত্তিতে কাজ করতে পারবেন না।

      • frameId

        নম্বর

        0 ভ্যালু থেকে বোঝা যায় যে অনুরোধটি মূল ফ্রেমে করা হয়েছে; পজিটিভ ভ্যালু থেকে বোঝা যায় যে অনুরোধটি সাবফ্রেমের আইডিতে করা হয়েছে। (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হলে (type হল main_frame বা sub_frame), frameId এই ফ্রেমের আইডি দেখায়, বাইরের ফ্রেমের আইডি নয়। ফ্রেম আইডি একটি ট্যাবের মধ্যে অনন্য।

      • Chrome 106+ Chrome 148 থেকে browser.*

        যে ধরনের ফ্রেমে অনুরোধ করা হয়েছে।

      • fromCache

        বুলিয়ান

        এই উত্তর ডিস্ক ক্যাশে থেকে আনা হয়েছে কিনা তা দেখায়।

      • ইনিশিয়েটর

        স্ট্রিং ঐচ্ছিক

        Chrome 63+ Chrome 148 থেকে browser.*

        যেখান থেকে অনুরোধটি শুরু করা হয়েছিল। রিডাইরেক্টের মাধ্যমে এটি পরিবর্তন হয় না। এটি যদি একটি অস্বচ্ছ উৎস হয়, তাহলে 'null' স্ট্রিং ব্যবহার করা হবে।

      • ip

        স্ট্রিং ঐচ্ছিক

        অনুরোধটি আসলে যে সার্ভার IP অ্যাড্রেসে পাঠানো হয়েছে। মনে রাখবেন যে এটি আক্ষরিক IPv6 অ্যাড্রেস হতে পারে।

      • মেথড

        স্ট্রিং

        স্ট্যান্ডার্ড HTTP পদ্ধতি।

      • parentDocumentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        এই ফ্রেমের মালিকানা থাকা পেরেন্ট ডকুমেন্টের UUID। অভিভাবক না থাকলে এটি সেট করা হয় না।

      • parentFrameId

        নম্বর

        অনুরোধ পাঠানো ফ্রেমকে যে ফ্রেম র‍্যাপ করে সেটির আইডি। কোনও পেরেন্ট ফ্রেম না থাকলে -১ হিসেবে সেট করুন।

      • requestId

        স্ট্রিং

        অনুরোধের আইডি। অনুরোধ আইডি ব্রাউজার সেশনে অনন্য। এর ফলে, একই অনুরোধের বিভিন্ন ইভেন্ট সম্পর্কিত করতে এগুলি ব্যবহার করা যেতে পারে।

      • tabId

        নম্বর

        যে ট্যাবে অনুরোধ করা হয়েছে সেটির আইডি। অনুরোধটি কোনও ট্যাবের সাথে সম্পর্কিত না হলে -১-এ সেট করুন।

      • timeStamp

        নম্বর

        এই সিগন্যাল ট্রিগার হওয়ার সময়, যুগ থেকে মিলিসেকেন্ডে।

      • ধরন

        অনুরোধ করা রিসোর্স কীভাবে ব্যবহার করা হবে।

      • URL

        স্ট্রিং

  • ফিল্টার করুন
  • extraInfoSpec

    OnErrorOccurredOptions[] ঐচ্ছিক

onHeadersReceived

browser.webRequest.onHeadersReceived.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnHeadersReceivedOptions[],
)

কোনও অনুরোধের HTTP রেসপন্স হেডার পাওয়া গেলে ফায়ার করা হয়।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (details: object) => BlockingResponse | undefined

    • বিস্তারিত বিবরণ

      অবজেক্ট

      • documentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        অনুরোধ করা ডকুমেন্টের UUID।

      • Chrome 106+ Chrome 148 থেকে browser.*

        ডকুমেন্টটি যে লাইফসাইকেলে রয়েছে।

      • frameId

        নম্বর

        0 ভ্যালু থেকে বোঝা যায় যে অনুরোধটি মূল ফ্রেমে করা হয়েছে; পজিটিভ ভ্যালু থেকে বোঝা যায় যে অনুরোধটি সাবফ্রেমের আইডিতে করা হয়েছে। (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হলে (type হল main_frame বা sub_frame), frameId এই ফ্রেমের আইডি দেখায়, বাইরের ফ্রেমের আইডি নয়। ফ্রেম আইডি একটি ট্যাবের মধ্যে অনন্য।

      • Chrome 106+ Chrome 148 থেকে browser.*

        যে ধরনের ফ্রেমে অনুরোধ করা হয়েছে।

      • ইনিশিয়েটর

        স্ট্রিং ঐচ্ছিক

        Chrome 63+ Chrome 148 থেকে browser.*

        যেখান থেকে অনুরোধটি শুরু করা হয়েছিল। রিডাইরেক্টের মাধ্যমে এটি পরিবর্তন হয় না। এটি যদি একটি অস্বচ্ছ উৎস হয়, তাহলে 'null' স্ট্রিং ব্যবহার করা হবে।

      • মেথড

        স্ট্রিং

        স্ট্যান্ডার্ড HTTP পদ্ধতি।

      • parentDocumentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        এই ফ্রেমের মালিকানা থাকা পেরেন্ট ডকুমেন্টের UUID। অভিভাবক না থাকলে এটি সেট করা হয় না।

      • parentFrameId

        নম্বর

        অনুরোধ পাঠানো ফ্রেমকে যে ফ্রেম র‍্যাপ করে সেটির আইডি। কোনও পেরেন্ট ফ্রেম না থাকলে -১ হিসেবে সেট করুন।

      • requestId

        স্ট্রিং

        অনুরোধের আইডি। অনুরোধ আইডি ব্রাউজার সেশনে অনন্য। এর ফলে, একই অনুরোধের বিভিন্ন ইভেন্ট সম্পর্কিত করতে এগুলি ব্যবহার করা যেতে পারে।

      • responseHeaders

        HttpHeaders ঐচ্ছিক

        এই উত্তরের সাথে পাওয়া HTTP রেসপন্স হেডার।

      • securityInfo

        SecurityInfo ঐচ্ছিক

        Chrome 144+ Chrome 148 থেকে browser.*

        অন্তর্নিহিত কানেকশনের জন্য ব্যবহৃত TLS/QUIC কানেকশন সম্পর্কিত তথ্য। extraInfoSpec প্যারামিটারে securityInfo উল্লেখ করা থাকলে তবেই প্রদান করা হয়।

      • statusCode

        নম্বর

        Chrome 43+ ব্রাউজার।* Chrome 148 থেকে

        সার্ভার থেকে ফেরত পাঠানো স্ট্যান্ডার্ড HTTP স্ট্যাটাস কোড।

      • statusLine

        স্ট্রিং

        উত্তরের HTTP স্ট্যাটাস লাইন বা HTTP/0.9 উত্তরের জন্য 'HTTP/0.9 200 OK' স্ট্রিং (অর্থাৎ, যেসব উত্তরে স্ট্যাটাস লাইন নেই)।

      • tabId

        নম্বর

        যে ট্যাবে অনুরোধ করা হয়েছে সেটির আইডি। অনুরোধটি কোনও ট্যাবের সাথে সম্পর্কিত না হলে -১-এ সেট করুন।

      • timeStamp

        নম্বর

        এই সিগন্যাল ট্রিগার হওয়ার সময়, যুগ থেকে মিলিসেকেন্ডে।

      • ধরন

        অনুরোধ করা রিসোর্স কীভাবে ব্যবহার করা হবে।

      • URL

        স্ট্রিং

    • ফেরত দেওয়া

      BlockingResponse | undefined

      "extraInfoSpec" প্যারামিটারে "ব্লকিং" নির্দিষ্ট করা থাকলে, ইভেন্ট লিসেনারকে এই ধরনের অবজেক্ট রিটার্ন করতে হবে।

  • ফিল্টার করুন
  • extraInfoSpec

    OnHeadersReceivedOptions[] ঐচ্ছিক

onResponseStarted

browser.webRequest.onResponseStarted.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnResponseStartedOptions[],
)

উত্তর বডির প্রথম বাইট রিসিভ করা হলে ফায়ার করা হয়। HTTP অনুরোধের ক্ষেত্রে, এর অর্থ হল স্ট্যাটাস লাইন এবং রেসপন্স হেডার উপলভ্য আছে।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (details: object) => void

    • বিস্তারিত বিবরণ

      অবজেক্ট

      • documentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        অনুরোধ করা ডকুমেন্টের UUID।

      • Chrome 106+ Chrome 148 থেকে browser.*

        ডকুমেন্টটি যে লাইফসাইকেলে রয়েছে।

      • frameId

        নম্বর

        0 ভ্যালু থেকে বোঝা যায় যে অনুরোধটি মূল ফ্রেমে করা হয়েছে; পজিটিভ ভ্যালু থেকে বোঝা যায় যে অনুরোধটি সাবফ্রেমের আইডিতে করা হয়েছে। (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হলে (type হল main_frame বা sub_frame), frameId এই ফ্রেমের আইডি দেখায়, বাইরের ফ্রেমের আইডি নয়। ফ্রেম আইডি একটি ট্যাবের মধ্যে অনন্য।

      • Chrome 106+ Chrome 148 থেকে browser.*

        যে ধরনের ফ্রেমে অনুরোধ করা হয়েছে।

      • fromCache

        বুলিয়ান

        এই উত্তর ডিস্ক ক্যাশে থেকে আনা হয়েছে কিনা তা দেখায়।

      • ইনিশিয়েটর

        স্ট্রিং ঐচ্ছিক

        Chrome 63+ Chrome 148 থেকে browser.*

        যেখান থেকে অনুরোধটি শুরু করা হয়েছিল। রিডাইরেক্টের মাধ্যমে এটি পরিবর্তন হয় না। এটি যদি একটি অস্বচ্ছ উৎস হয়, তাহলে 'null' স্ট্রিং ব্যবহার করা হবে।

      • ip

        স্ট্রিং ঐচ্ছিক

        অনুরোধটি আসলে যে সার্ভার IP অ্যাড্রেসে পাঠানো হয়েছে। মনে রাখবেন যে এটি আক্ষরিক IPv6 অ্যাড্রেস হতে পারে।

      • মেথড

        স্ট্রিং

        স্ট্যান্ডার্ড HTTP পদ্ধতি।

      • parentDocumentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        এই ফ্রেমের মালিকানা থাকা পেরেন্ট ডকুমেন্টের UUID। অভিভাবক না থাকলে এটি সেট করা হয় না।

      • parentFrameId

        নম্বর

        অনুরোধ পাঠানো ফ্রেমকে যে ফ্রেম র‍্যাপ করে সেটির আইডি। কোনও পেরেন্ট ফ্রেম না থাকলে -১ হিসেবে সেট করুন।

      • requestId

        স্ট্রিং

        অনুরোধের আইডি। অনুরোধ আইডি ব্রাউজার সেশনে অনন্য। এর ফলে, একই অনুরোধের বিভিন্ন ইভেন্ট সম্পর্কিত করতে এগুলি ব্যবহার করা যেতে পারে।

      • responseHeaders

        HttpHeaders ঐচ্ছিক

        এই উত্তরের সাথে পাওয়া HTTP রেসপন্স হেডার।

      • statusCode

        নম্বর

        সার্ভার থেকে ফেরত পাঠানো স্ট্যান্ডার্ড HTTP স্ট্যাটাস কোড।

      • statusLine

        স্ট্রিং

        উত্তরের HTTP স্ট্যাটাস লাইন বা HTTP/0.9 উত্তরের জন্য 'HTTP/0.9 200 OK' স্ট্রিং (অর্থাৎ, যেসব উত্তরে স্ট্যাটাস লাইন নেই) অথবা কোনও হেডার না থাকলে খালি স্ট্রিং।

      • tabId

        নম্বর

        যে ট্যাবে অনুরোধ করা হয়েছে সেটির আইডি। অনুরোধটি কোনও ট্যাবের সাথে সম্পর্কিত না হলে -১-এ সেট করুন।

      • timeStamp

        নম্বর

        এই সিগন্যাল ট্রিগার হওয়ার সময়, যুগ থেকে মিলিসেকেন্ডে।

      • ধরন

        অনুরোধ করা রিসোর্স কীভাবে ব্যবহার করা হবে।

      • URL

        স্ট্রিং

  • ফিল্টার করুন
  • extraInfoSpec

    OnResponseStartedOptions[] ঐচ্ছিক

onSendHeaders

browser.webRequest.onSendHeaders.addListener(
  callback: function,
  filter: RequestFilter,
  extraInfoSpec?: OnSendHeadersOptions[],
)

সার্ভারে অনুরোধ পাঠানোর ঠিক আগে ফায়ার করা হয় (onSendHeaders ফায়ার করার সময় আগের onBeforeSendHeaders কলব্যাকের পরিবর্তন দেখা যায়)।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (details: object) => void

    • বিস্তারিত বিবরণ

      অবজেক্ট

      • documentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        অনুরোধ করা ডকুমেন্টের UUID।

      • Chrome 106+ Chrome 148 থেকে browser.*

        ডকুমেন্টটি যে লাইফসাইকেলে রয়েছে।

      • frameId

        নম্বর

        0 ভ্যালু থেকে বোঝা যায় যে অনুরোধটি মূল ফ্রেমে করা হয়েছে; পজিটিভ ভ্যালু থেকে বোঝা যায় যে অনুরোধটি সাবফ্রেমের আইডিতে করা হয়েছে। (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হলে (type হল main_frame বা sub_frame), frameId এই ফ্রেমের আইডি দেখায়, বাইরের ফ্রেমের আইডি নয়। ফ্রেম আইডি একটি ট্যাবের মধ্যে অনন্য।

      • Chrome 106+ Chrome 148 থেকে browser.*

        যে ধরনের ফ্রেমে অনুরোধ করা হয়েছে।

      • ইনিশিয়েটর

        স্ট্রিং ঐচ্ছিক

        Chrome 63+ Chrome 148 থেকে browser.*

        যেখান থেকে অনুরোধটি শুরু করা হয়েছিল। রিডাইরেক্টের মাধ্যমে এটি পরিবর্তন হয় না। এটি যদি একটি অস্বচ্ছ উৎস হয়, তাহলে 'null' স্ট্রিং ব্যবহার করা হবে।

      • মেথড

        স্ট্রিং

        স্ট্যান্ডার্ড HTTP পদ্ধতি।

      • parentDocumentId

        স্ট্রিং ঐচ্ছিক

        Chrome 106+ Chrome 148 থেকে browser.*

        এই ফ্রেমের মালিকানা থাকা পেরেন্ট ডকুমেন্টের UUID। অভিভাবক না থাকলে এটি সেট করা হয় না।

      • parentFrameId

        নম্বর

        অনুরোধ পাঠানো ফ্রেমকে যে ফ্রেম র‍্যাপ করে সেটির আইডি। কোনও পেরেন্ট ফ্রেম না থাকলে -১ হিসেবে সেট করুন।

      • requestHeaders

        HttpHeaders ঐচ্ছিক

        এই অনুরোধের সাথে পাঠানো HTTP অনুরোধ হেডার।

      • requestId

        স্ট্রিং

        অনুরোধের আইডি। অনুরোধ আইডি ব্রাউজার সেশনে অনন্য। এর ফলে, একই অনুরোধের বিভিন্ন ইভেন্ট সম্পর্কিত করতে এগুলি ব্যবহার করা যেতে পারে।

      • tabId

        নম্বর

        যে ট্যাবে অনুরোধ করা হয়েছে সেটির আইডি। অনুরোধটি কোনও ট্যাবের সাথে সম্পর্কিত না হলে -১-এ সেট করুন।

      • timeStamp

        নম্বর

        এই সিগন্যাল ট্রিগার হওয়ার সময়, যুগ থেকে মিলিসেকেন্ডে।

      • ধরন

        অনুরোধ করা রিসোর্স কীভাবে ব্যবহার করা হবে।

      • URL

        স্ট্রিং

  • ফিল্টার করুন
  • extraInfoSpec

    OnSendHeadersOptions[] ঐচ্ছিক