ব্রাউজার.ওয়েবঅনুরোধ

বর্ণনা

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

অনুমতি

webRequest

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

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

webRequestBlocking

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

webRequestAuthProvider

onAuthRequired মেথডটি ব্যবহার করা আবশ্যক। প্রমাণীকরণ পরিচালনা দেখুন।

ধারণা এবং ব্যবহার

অনুরোধের জীবনচক্র

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

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

webrequest API-এর দৃষ্টিকোণ থেকে একটি ওয়েব অনুরোধের জীবনচক্র

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

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

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

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

  • অনুমোদন
  • ক্যাশে-নিয়ন্ত্রণ
  • সংযোগ
  • বিষয়বস্তুর দৈর্ঘ্য
  • হোস্ট
  • If-Modified-Since
  • যদি-কোনো-মিল না হয়
  • যদি-পরিসর
  • আংশিক-ডেটা
  • প্রাগমা
  • প্রক্সি-অনুমোদন
  • প্রক্সি-সংযোগ
  • স্থানান্তর-এনকোডিং

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

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

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

  • উৎপত্তি

ক্রোম ৭২ থেকে শুরু করে, ক্রস অরিজিন রিড ব্লকিং (CORB) কোনো রেসপন্স ব্লক করার আগে যদি আপনি রেসপন্সটি পরিবর্তন করতে চান, তাহলে আপনাকে opt_extraInfoSpec'extraHeaders' উল্লেখ করতে হবে।

ক্রোম ৭২ থেকে, নিম্নলিখিত রিকোয়েস্ট হেডারগুলি আর প্রদান করা হয় না এবং opt_extraInfoSpec'extraHeaders' উল্লেখ না করে এগুলি পরিবর্তন বা অপসারণ করা যায় না:

  • ভাষা গ্রহণ করুন
  • অ্যাকসেপ্ট-এনকোডিং
  • রেফারকারী
  • কুকি

ক্রোম ৭২ থেকে, Set-Cookie রেসপন্স হেডারটি আর প্রদান করা হয় না এবং opt_extraInfoSpec'extraHeaders' উল্লেখ না করে এটি পরিবর্তন বা অপসারণ করা যায় না।

Chrome 89 থেকে শুরু করে, opt_extraInfoSpec'extraHeaders' উল্লেখ না করে X-Frame-Options রেসপন্স হেডারটি কার্যকরভাবে পরিবর্তন বা অপসারণ করা যায় না।

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

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

  • একটি প্রতিষ্ঠিত ওয়েবসকেট সংযোগের মাধ্যমে পাঠানো স্বতন্ত্র বার্তা।
  • WebSocket সংযোগ বন্ধ করছে।

WebSocket অনুরোধের জন্য রিডাইরেক্ট সমর্থিত নয়

ক্রোম ৭২ থেকে, একটি এক্সটেনশন শুধুমাত্র তখনই কোনো অনুরোধ আটকাতে পারবে, যদি অনুরোধ করা ইউআরএল এবং অনুরোধকারী উভয়ের ওপরই তার হোস্ট পারমিশন থাকে।

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

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

অনুরোধ আইডি

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

ইভেন্ট শ্রোতাদের নিবন্ধন করা

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

ওয়েব রিকোয়েস্ট এপিআই-এর 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']
);

বাস্তবায়নের বিবরণ

ওয়েব রিকোয়েস্ট এপিআই ব্যবহার করে এমন কোনো এক্সটেনশন তৈরি করার সময় বেশ কিছু বাস্তবায়নগত খুঁটিনাটি বিষয় বোঝা গুরুত্বপূর্ণ হতে পারে:

ওয়েব_অ্যাক্সেসযোগ্য_সম্পদ

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

সংঘাত সমাধান

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

ক্যাশিং

ক্রোম দুটি ক্যাশ ব্যবহার করে—একটি অন-ডিস্ক ক্যাশ এবং একটি খুব দ্রুত ইন-মেমরি ক্যাশ। একটি ইন-মেমরি ক্যাশের জীবনকাল একটি রেন্ডার প্রক্রিয়ার জীবনকালের সাথে সংযুক্ত থাকে, যা মোটামুটিভাবে একটি ট্যাবের সমতুল্য। ইন-মেমরি ক্যাশ থেকে উত্তর দেওয়া অনুরোধগুলি ওয়েব রিকোয়েস্ট এপিআই-এর কাছে অদৃশ্য থাকে। যদি কোনো রিকোয়েস্ট হ্যান্ডলার তার আচরণ পরিবর্তন করে (উদাহরণস্বরূপ, যে আচরণের ভিত্তিতে অনুরোধগুলি ব্লক করা হয়), তাহলে একটি সাধারণ পেজ রিফ্রেশ এই পরিবর্তিত আচরণকে সম্মান নাও করতে পারে। আচরণের পরিবর্তনটি নিশ্চিত করতে, ইন-মেমরি ক্যাশ ফ্লাশ করার জন্য 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

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

বৈশিষ্ট্য

  • প্রমাণীকরণ

    বস্তু ঐচ্ছিক

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

    • পাসওয়ার্ড

      স্ট্রিং

    • ব্যবহারকারীর নাম

      স্ট্রিং

  • বাতিল করুন

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

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

  • পুনঃনির্দেশ ইউআরএল

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

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

  • অনুরোধ হেডার

    HttpHeaders ঐচ্ছিক

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

  • প্রতিক্রিয়া হেডার

    HttpHeaders ঐচ্ছিক

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

FormDataItem

ক্রোম ৬৬+

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

এনাম

অ্যারেবাফার

স্ট্রিং

HttpHeaders

HTTP হেডারগুলির একটি অ্যারে। প্রতিটি হেডার একটি ডিকশনারি হিসাবে উপস্থাপিত হয়, যেখানে name এবং value ' অথবা binaryValue কী-গুলি থাকে।

প্রকার

বস্তু[]

বৈশিষ্ট্য

  • বাইনারি মান

    সংখ্যা[] ঐচ্ছিক

    যদি HTTP হেডারটি UTF-8 দ্বারা প্রকাশ করা না যায়, তবে তার মান স্বতন্ত্র বাইট মান (0..255) হিসেবে সংরক্ষিত থাকে।

  • নাম

    স্ট্রিং

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

  • মূল্য

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

    HTTP হেডারের মান, যদি এটিকে UTF-8 দ্বারা প্রকাশ করা যায়।

IgnoredActionType

ক্রোম ৭০+

এনাম

"পুনঃনির্দেশ"

"অনুরোধ_হেডার"

"প্রতিক্রিয়া_হেডার"

"auth_credentials"

OnAuthRequiredOptions

ক্রোম ৪৪+

এনাম

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

"ব্লকিং"
কলব্যাক ফাংশনটি রিটার্ন না করা পর্যন্ত অনুরোধটি ব্লক থাকবে তা নির্দিষ্ট করে।

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

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

OnBeforeRedirectOptions

ক্রোম ৪৪+

এনাম

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

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

OnBeforeRequestOptions

ক্রোম ৪৪+

এনাম

"ব্লকিং"
কলব্যাক ফাংশনটি রিটার্ন না করা পর্যন্ত অনুরোধটি ব্লক থাকবে তা নির্দিষ্ট করে।

"অনুরোধের মূল অংশ"
এটি নির্দিষ্ট করে যে অনুরোধের মূল অংশটি ইভেন্টের অন্তর্ভুক্ত করতে হবে।

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

OnBeforeSendHeadersOptions

ক্রোম ৪৪+

এনাম

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

"ব্লকিং"
কলব্যাক ফাংশনটি রিটার্ন না করা পর্যন্ত অনুরোধটি ব্লক থাকবে তা নির্দিষ্ট করে।

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

OnCompletedOptions

ক্রোম ৪৪+

এনাম

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

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

OnErrorOccurredOptions

ক্রোম ৭৯+

মূল্য

"অতিরিক্ত হেডার"

OnHeadersReceivedOptions

ক্রোম ৪৪+

এনাম

"ব্লকিং"
কলব্যাক ফাংশনটি রিটার্ন না করা পর্যন্ত অনুরোধটি ব্লক থাকবে তা নির্দিষ্ট করে।

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

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

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

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

OnResponseStartedOptions

ক্রোম ৪৪+

এনাম

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

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

OnSendHeadersOptions

ক্রোম ৪৪+

এনাম

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

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

RequestFilter

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

বৈশিষ্ট্য

  • ট্যাবআইডি

    সংখ্যা ঐচ্ছিক

  • প্রকার

    রিসোর্স টাইপ [] ঐচ্ছিক

    অনুরোধের প্রকারভেদের একটি তালিকা। যে অনুরোধগুলো এই প্রকারভেদগুলোর কোনোটির সাথেই মিলবে না, সেগুলো বাদ দেওয়া হবে।

  • ইউআরএল

    স্ট্রিং[]

    ইউআরএল বা ইউআরএল প্যাটার্নের একটি তালিকা। যে অনুরোধগুলো এই ইউআরএলগুলোর কোনোটির সাথেই মিলবে না, সেগুলো ফিল্টার করে বাদ দেওয়া হবে।

  • উইন্ডোআইডি

    সংখ্যা ঐচ্ছিক

ResourceType

ক্রোম ৪৪+

এনাম

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

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

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

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

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

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

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

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

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

"csp_report"
রিসোর্সটিকে একটি কন্টেন্ট সিকিউরিটি পলিসি (সিএসপি) রিপোর্ট হিসেবে নির্দিষ্ট করে।

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

"ওয়েবসকেট"
রিসোর্সটিকে ওয়েবসকেট হিসেবে নির্দিষ্ট করে।

"ওয়েববান্ডেল"
রিসোর্সটিকে একটি ওয়েববান্ডেল হিসেবে নির্দিষ্ট করে।

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

SecurityInfo

ক্রোম ১৪৪+

বৈশিষ্ট্য

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

    বস্তু[]

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

    • আঙুলের ছাপ

      বস্তু

      সার্টিফিকেটের আঙুলের ছাপ।

      • sha256

        স্ট্রিং

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

    • rawDER

      অ্যারেবাফার ঐচ্ছিক

      ডিইআর এনকোডেড সার্ভার সার্টিফিকেটের কাঁচা বাইট

  • রাজ্য

    স্ট্রিং

    সংযোগের অবস্থা। সুরক্ষিত, অসুরক্ষিত বা বিচ্ছিন্ন-এর মধ্যে একটি।

UploadData

ইউআরএল অনুরোধে আপলোড করা ডেটা ধারণ করে।

বৈশিষ্ট্য

  • বাইট

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

    ডেটার একটি অনুলিপি সহ একটি অ্যারেবাফার।

  • ফাইল

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

    ফাইলটির পাথ এবং নাম সম্বলিত একটি স্ট্রিং।

বৈশিষ্ট্য

MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES

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

মূল্য

২০

পদ্ধতি

handlerBehaviorChanged()

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

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

ফেরত

  • প্রতিশ্রুতি<শূন্য>

    ক্রোম ১১৬+

ইভেন্টগুলি

onActionIgnored

ক্রোম ৭০+
chrome.webRequest.onActionIgnored.addListener(
  callback: function,
)

যখন কোনো এক্সটেনশনের নেটওয়ার্ক অনুরোধে প্রস্তাবিত পরিবর্তন উপেক্ষা করা হয়, তখন এটি সক্রিয় হয়। অন্যান্য এক্সটেনশনের সাথে দ্বন্দ্বের ক্ষেত্রে এটি ঘটে।

প্যারামিটার

  • কলব্যাক

    ফাংশন

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

    (details: object) => void

    • বিস্তারিত

      বস্তু

      • প্রস্তাবিত পদক্ষেপটি উপেক্ষা করা হয়েছিল।

      • অনুরোধ আইডি

        স্ট্রিং

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

onAuthRequired

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

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

প্যারামিটার

  • কলব্যাক

    ফাংশন

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

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

    • বিস্তারিত

      বস্তু

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

        বস্তু

        সার্ভারটি প্রমাণীকরণের অনুরোধ করছে।

        • হোস্ট

          স্ট্রিং

        • বন্দর

          সংখ্যা

      • ডকুমেন্ট আইডি

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

        ক্রোম ১০৬+

        অনুরোধকারী নথিটির UUID।

      • ক্রোম ১০৬+

        ডকুমেন্টটি যে জীবনচক্রে রয়েছে।

      • ফ্রেমআইডি

        সংখ্যা

        ০ মানটি নির্দেশ করে যে অনুরোধটি মূল ফ্রেমে ঘটছে; একটি ধনাত্মক মান সেই সাবফ্রেমের আইডি নির্দেশ করে যেখানে অনুরোধটি ঘটছে। যদি কোনো (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হয় (যার type main_frame বা sub_frame ), তাহলে frameId এই ফ্রেমের আইডি নির্দেশ করে, বাইরের ফ্রেমের আইডি নয়। একটি ট্যাবের মধ্যে ফ্রেম আইডিগুলো অনন্য হয়।

      • ক্রোম ১০৬+

        অনুরোধটি যে ধরনের ফ্রেমে সংঘটিত হয়েছিল।

      • উদ্যোগী

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

        ক্রোম ৬৩+

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

      • isProxy

        বুলিয়ান

        Proxy-Authenticate-এর জন্য True, WWW-Authenticate-এর জন্য False।

      • পদ্ধতি

        স্ট্রিং

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

      • প্যারেন্টডকুমেন্টআইডি

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

        ক্রোম ১০৬+

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

      • parentFrameId

        সংখ্যা

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

      • রাজ্য

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

        সার্ভার কর্তৃক প্রদত্ত প্রমাণীকরণ ক্ষেত্র, যদি এমন কোনো ক্ষেত্র থাকে।

      • অনুরোধ আইডি

        স্ট্রিং

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

      • প্রতিক্রিয়া হেডার

        HttpHeaders ঐচ্ছিক

        এই প্রতিক্রিয়ার সাথে প্রাপ্ত HTTP প্রতিক্রিয়া হেডারগুলি।

      • পরিকল্পনা

        স্ট্রিং

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

      • স্ট্যাটাসকোড

        সংখ্যা

        ক্রোম ৪৩+

        সার্ভার কর্তৃক ফেরত দেওয়া স্ট্যান্ডার্ড HTTP স্ট্যাটাস কোড।

      • স্ট্যাটাসলাইন

        স্ট্রিং

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

      • ট্যাবআইডি

        সংখ্যা

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

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

        সংখ্যা

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

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

      • ইউআরএল

        স্ট্রিং

    • অ্যাসিঙ্ককলব্যাক

      ফাংশন ঐচ্ছিক

      ক্রোম ৫৮+

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

      (response: BlockingResponse) => void

    • ফেরত

      ব্লকিংরেসপন্স | অনির্দিষ্ট

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

  • অতিরিক্ত তথ্য স্পেসিফিকেশন

    OnAuthRequiredOptions [] ঐচ্ছিক

onBeforeRedirect

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

সার্ভার-প্রবর্তিত পুনঃনির্দেশ সংঘটিত হওয়ার ঠিক আগে এটি কার্যকর হয়।

প্যারামিটার

  • কলব্যাক

    ফাংশন

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

    (details: object) => void

    • বিস্তারিত

      বস্তু

      • ডকুমেন্ট আইডি

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

        ক্রোম ১০৬+

        অনুরোধকারী নথিটির UUID।

      • ক্রোম ১০৬+

        ডকুমেন্টটি যে জীবনচক্রে রয়েছে।

      • ফ্রেমআইডি

        সংখ্যা

        ০ মানটি নির্দেশ করে যে অনুরোধটি মূল ফ্রেমে ঘটছে; একটি ধনাত্মক মান সেই সাবফ্রেমের আইডি নির্দেশ করে যেখানে অনুরোধটি ঘটছে। যদি কোনো (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হয় (যার type main_frame বা sub_frame ), তাহলে frameId এই ফ্রেমের আইডি নির্দেশ করে, বাইরের ফ্রেমের আইডি নয়। একটি ট্যাবের মধ্যে ফ্রেম আইডিগুলো অনন্য হয়।

      • ক্রোম ১০৬+

        অনুরোধটি যে ধরনের ফ্রেমে সংঘটিত হয়েছিল।

      • ক্যাশে থেকে

        বুলিয়ান

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

      • উদ্যোগী

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

        ক্রোম ৬৩+

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

      • আইপি

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

        যে সার্ভার আইপি অ্যাড্রেসে অনুরোধটি প্রকৃতপক্ষে পাঠানো হয়েছিল। উল্লেখ্য যে, এটি একটি আক্ষরিক IPv6 অ্যাড্রেসও হতে পারে।

      • পদ্ধতি

        স্ট্রিং

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

      • প্যারেন্টডকুমেন্টআইডি

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

        ক্রোম ১০৬+

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

      • parentFrameId

        সংখ্যা

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

      • পুনঃনির্দেশ ইউআরএল

        স্ট্রিং

        নতুন ইউআরএল।

      • অনুরোধ আইডি

        স্ট্রিং

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

      • প্রতিক্রিয়া হেডার

        HttpHeaders ঐচ্ছিক

        এই রিডাইরেক্টের সাথে প্রাপ্ত HTTP রেসপন্স হেডারগুলো।

      • স্ট্যাটাসকোড

        সংখ্যা

        সার্ভার কর্তৃক ফেরত দেওয়া স্ট্যান্ডার্ড HTTP স্ট্যাটাস কোড।

      • স্ট্যাটাসলাইন

        স্ট্রিং

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

      • ট্যাবআইডি

        সংখ্যা

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

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

        সংখ্যা

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

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

      • ইউআরএল

        স্ট্রিং

  • অতিরিক্ত তথ্য স্পেসিফিকেশন

    OnBeforeRedirectOptions [] ঐচ্ছিক

onBeforeRequest

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

যখন কোনো অনুরোধ সংঘটিত হতে চলেছে, তখন এটি সক্রিয় হয়।

প্যারামিটার

  • কলব্যাক

    ফাংশন

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

    (details: object) => BlockingResponse | undefined

    • বিস্তারিত

      বস্তু

      • ডকুমেন্ট আইডি

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

        ক্রোম ১০৬+

        অনুরোধকারী নথিটির UUID।

      • ডকুমেন্ট লাইফসাইকেল
        ক্রোম ১০৬+

        ডকুমেন্টটি যে জীবনচক্রে রয়েছে।

      • ফ্রেমআইডি

        সংখ্যা

        ০ মানটি নির্দেশ করে যে অনুরোধটি মূল ফ্রেমে ঘটছে; একটি ধনাত্মক মান সেই সাবফ্রেমের আইডি নির্দেশ করে যেখানে অনুরোধটি ঘটছে। যদি কোনো (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হয় (যার type main_frame বা sub_frame ), তাহলে frameId এই ফ্রেমের আইডি নির্দেশ করে, বাইরের ফ্রেমের আইডি নয়। একটি ট্যাবের মধ্যে ফ্রেম আইডিগুলো অনন্য হয়।

      • ফ্রেমটাইপ

        extensionTypes.FrameType ঐচ্ছিক

        ক্রোম ১০৬+

        অনুরোধটি যে ধরনের ফ্রেমে সংঘটিত হয়েছিল।

      • উদ্যোগী

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

        ক্রোম ৬৩+

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

      • পদ্ধতি

        স্ট্রিং

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

      • প্যারেন্টডকুমেন্টআইডি

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

        ক্রোম ১০৬+

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

      • parentFrameId

        সংখ্যা

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

      • অনুরোধের মূল অংশ

        বস্তু ঐচ্ছিক

        HTTP অনুরোধের মূল অংশের ডেটা ধারণ করে। এটি শুধুমাত্র তখনই প্রদান করা হয়, যখন extraInfoSpec-এ 'requestBody' থাকে।

        • ত্রুটি

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

          অনুরোধের মূল অংশের ডেটা সংগ্রহ করার সময় ত্রুটি।

        • ফর্ম ডেটা

          বস্তু ঐচ্ছিক

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

        • কাঁচা

          আপলোড ডেটা [] ঐচ্ছিক

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

      • অনুরোধ আইডি

        স্ট্রিং

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

      • ট্যাবআইডি

        সংখ্যা

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

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

        সংখ্যা

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

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

      • ইউআরএল

        স্ট্রিং

    • ফেরত

      ব্লকিংরেসপন্স | অনির্দিষ্ট

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

  • অতিরিক্ত তথ্য স্পেসিফিকেশন

    OnBeforeRequestOptions [] ঐচ্ছিক

onBeforeSendHeaders

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

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

প্যারামিটার

  • কলব্যাক

    ফাংশন

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

    (details: object) => BlockingResponse | undefined

    • বিস্তারিত

      বস্তু

      • ডকুমেন্ট আইডি

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

        ক্রোম ১০৬+

        অনুরোধকারী নথিটির UUID।

      • ক্রোম ১০৬+

        ডকুমেন্টটি যে জীবনচক্রে রয়েছে।

      • ফ্রেমআইডি

        সংখ্যা

        ০ মানটি নির্দেশ করে যে অনুরোধটি মূল ফ্রেমে ঘটছে; একটি ধনাত্মক মান সেই সাবফ্রেমের আইডি নির্দেশ করে যেখানে অনুরোধটি ঘটছে। যদি কোনো (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হয় (যার type main_frame বা sub_frame ), তাহলে frameId এই ফ্রেমের আইডি নির্দেশ করে, বাইরের ফ্রেমের আইডি নয়। একটি ট্যাবের মধ্যে ফ্রেম আইডিগুলো অনন্য হয়।

      • ক্রোম ১০৬+

        অনুরোধটি যে ধরনের ফ্রেমে সংঘটিত হয়েছিল।

      • উদ্যোগী

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

        ক্রোম ৬৩+

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

      • পদ্ধতি

        স্ট্রিং

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

      • প্যারেন্টডকুমেন্টআইডি

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

        ক্রোম ১০৬+

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

      • parentFrameId

        সংখ্যা

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

      • অনুরোধ হেডার

        HttpHeaders ঐচ্ছিক

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

      • অনুরোধ আইডি

        স্ট্রিং

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

      • ট্যাবআইডি

        সংখ্যা

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

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

        সংখ্যা

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

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

      • ইউআরএল

        স্ট্রিং

    • ফেরত

      ব্লকিংরেসপন্স | অনির্দিষ্ট

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

  • অতিরিক্ত তথ্য স্পেসিফিকেশন

    OnBeforeSendHeadersOptions [] ঐচ্ছিক

onCompleted

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

কোনো অনুরোধ সম্পন্ন হলে এটি সক্রিয় হয়।

প্যারামিটার

  • কলব্যাক

    ফাংশন

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

    (details: object) => void

    • বিস্তারিত

      বস্তু

      • ডকুমেন্ট আইডি

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

        ক্রোম ১০৬+

        অনুরোধকারী নথিটির UUID।

      • ক্রোম ১০৬+

        The lifecycle the document is in.

      • frameId

        সংখ্যা

        The value 0 indicates that the request happens in the main frame; a positive value indicates the ID of a subframe in which the request happens. If the document of a (sub-)frame is loaded ( type is main_frame or sub_frame ), frameId indicates the ID of this frame, not the ID of the outer frame. Frame IDs are unique within a tab.

      • Chrome 106+

        The type of frame the request occurred in.

      • fromCache

        বুলিয়ান

        Indicates if this response was fetched from disk cache.

      • initiator

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

        Chrome 63+

        The origin where the request was initiated. This does not change through redirects. If this is an opaque origin, the string 'null' will be used.

      • ip

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

        The server IP address that the request was actually sent to. Note that it may be a literal IPv6 address.

      • পদ্ধতি

        স্ট্রিং

        Standard HTTP method.

      • parentDocumentId

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

        Chrome 106+

        The UUID of the parent document owning this frame. This is not set if there is no parent.

      • parentFrameId

        সংখ্যা

        ID of frame that wraps the frame which sent the request. Set to -1 if no parent frame exists.

      • requestId

        স্ট্রিং

        The ID of the request. Request IDs are unique within a browser session. As a result, they could be used to relate different events of the same request.

      • responseHeaders

        HttpHeaders optional

        The HTTP response headers that were received along with this response.

      • statusCode

        সংখ্যা

        Standard HTTP status code returned by the server.

      • statusLine

        স্ট্রিং

        HTTP status line of the response or the 'HTTP/0.9 200 OK' string for HTTP/0.9 responses (ie, responses that lack a status line) or an empty string if there are no headers.

      • ট্যাবআইডি

        সংখ্যা

        The ID of the tab in which the request takes place. Set to -1 if the request isn't related to a tab.

      • timeStamp

        সংখ্যা

        The time when this signal is triggered, in milliseconds since the epoch.

      • প্রকার

        How the requested resource will be used.

      • ইউআরএল

        স্ট্রিং

  • ফিল্টার
  • extraInfoSpec

    OnCompletedOptions [] optional

onErrorOccurred

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

Fired when an error occurs.

প্যারামিটার

  • কলব্যাক

    ফাংশন

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

    (details: object) => void

    • বিস্তারিত

      বস্তু

      • ডকুমেন্ট আইডি

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

        Chrome 106+

        The UUID of the document making the request. This value is not present if the request is a navigation of a frame.

      • Chrome 106+

        The lifecycle the document is in.

      • ত্রুটি

        স্ট্রিং

        The error description. This string is not guaranteed to remain backwards compatible between releases. You must not parse and act based upon its content.

      • frameId

        সংখ্যা

        The value 0 indicates that the request happens in the main frame; a positive value indicates the ID of a subframe in which the request happens. If the document of a (sub-)frame is loaded ( type is main_frame or sub_frame ), frameId indicates the ID of this frame, not the ID of the outer frame. Frame IDs are unique within a tab.

      • Chrome 106+

        The type of frame the request occurred in.

      • fromCache

        বুলিয়ান

        Indicates if this response was fetched from disk cache.

      • initiator

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

        Chrome 63+

        The origin where the request was initiated. This does not change through redirects. If this is an opaque origin, the string 'null' will be used.

      • ip

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

        The server IP address that the request was actually sent to. Note that it may be a literal IPv6 address.

      • পদ্ধতি

        স্ট্রিং

        Standard HTTP method.

      • parentDocumentId

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

        Chrome 106+

        The UUID of the parent document owning this frame. This is not set if there is no parent.

      • parentFrameId

        সংখ্যা

        ID of frame that wraps the frame which sent the request. Set to -1 if no parent frame exists.

      • requestId

        স্ট্রিং

        The ID of the request. Request IDs are unique within a browser session. As a result, they could be used to relate different events of the same request.

      • ট্যাবআইডি

        সংখ্যা

        The ID of the tab in which the request takes place. Set to -1 if the request isn't related to a tab.

      • timeStamp

        সংখ্যা

        The time when this signal is triggered, in milliseconds since the epoch.

      • প্রকার

        How the requested resource will be used.

      • ইউআরএল

        স্ট্রিং

  • ফিল্টার
  • extraInfoSpec

onHeadersReceived

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

Fired when HTTP response headers of a request have been received.

প্যারামিটার

  • কলব্যাক

    ফাংশন

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

    (details: object) => BlockingResponse | undefined

    • বিস্তারিত

      বস্তু

      • ডকুমেন্ট আইডি

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

        Chrome 106+

        The UUID of the document making the request.

      • Chrome 106+

        The lifecycle the document is in.

      • frameId

        সংখ্যা

        The value 0 indicates that the request happens in the main frame; a positive value indicates the ID of a subframe in which the request happens. If the document of a (sub-)frame is loaded ( type is main_frame or sub_frame ), frameId indicates the ID of this frame, not the ID of the outer frame. Frame IDs are unique within a tab.

      • Chrome 106+

        The type of frame the request occurred in.

      • initiator

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

        Chrome 63+

        The origin where the request was initiated. This does not change through redirects. If this is an opaque origin, the string 'null' will be used.

      • পদ্ধতি

        স্ট্রিং

        Standard HTTP method.

      • parentDocumentId

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

        Chrome 106+

        The UUID of the parent document owning this frame. This is not set if there is no parent.

      • parentFrameId

        সংখ্যা

        ID of frame that wraps the frame which sent the request. Set to -1 if no parent frame exists.

      • requestId

        স্ট্রিং

        The ID of the request. Request IDs are unique within a browser session. As a result, they could be used to relate different events of the same request.

      • responseHeaders

        HttpHeaders optional

        The HTTP response headers that have been received with this response.

      • securityInfo

        SecurityInfo optional

        Chrome 144+

        Information about the TLS/QUIC connection used for the underlying connection. Only provided if securityInfo is specified in the extraInfoSpec parameter.

      • statusCode

        সংখ্যা

        Chrome 43+

        Standard HTTP status code returned by the server.

      • statusLine

        স্ট্রিং

        HTTP status line of the response or the 'HTTP/0.9 200 OK' string for HTTP/0.9 responses (ie, responses that lack a status line).

      • ট্যাবআইডি

        সংখ্যা

        The ID of the tab in which the request takes place. Set to -1 if the request isn't related to a tab.

      • timeStamp

        সংখ্যা

        The time when this signal is triggered, in milliseconds since the epoch.

      • প্রকার

        How the requested resource will be used.

      • ইউআরএল

        স্ট্রিং

    • ফেরত

      BlockingResponse | undefined

      If "blocking" is specified in the "extraInfoSpec" parameter, the event listener should return an object of this type.

  • ফিল্টার
  • extraInfoSpec

onResponseStarted

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

Fired when the first byte of the response body is received. For HTTP requests, this means that the status line and response headers are available.

প্যারামিটার

  • কলব্যাক

    ফাংশন

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

    (details: object) => void

    • বিস্তারিত

      বস্তু

      • ডকুমেন্ট আইডি

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

        Chrome 106+

        The UUID of the document making the request.

      • Chrome 106+

        The lifecycle the document is in.

      • frameId

        সংখ্যা

        The value 0 indicates that the request happens in the main frame; a positive value indicates the ID of a subframe in which the request happens. If the document of a (sub-)frame is loaded ( type is main_frame or sub_frame ), frameId indicates the ID of this frame, not the ID of the outer frame. Frame IDs are unique within a tab.

      • Chrome 106+

        The type of frame the request occurred in.

      • fromCache

        বুলিয়ান

        Indicates if this response was fetched from disk cache.

      • initiator

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

        Chrome 63+

        The origin where the request was initiated. This does not change through redirects. If this is an opaque origin, the string 'null' will be used.

      • ip

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

        The server IP address that the request was actually sent to. Note that it may be a literal IPv6 address.

      • পদ্ধতি

        স্ট্রিং

        Standard HTTP method.

      • parentDocumentId

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

        Chrome 106+

        The UUID of the parent document owning this frame. This is not set if there is no parent.

      • parentFrameId

        সংখ্যা

        ID of frame that wraps the frame which sent the request. Set to -1 if no parent frame exists.

      • requestId

        স্ট্রিং

        The ID of the request. Request IDs are unique within a browser session. As a result, they could be used to relate different events of the same request.

      • responseHeaders

        HttpHeaders optional

        The HTTP response headers that were received along with this response.

      • statusCode

        সংখ্যা

        Standard HTTP status code returned by the server.

      • statusLine

        স্ট্রিং

        HTTP status line of the response or the 'HTTP/0.9 200 OK' string for HTTP/0.9 responses (ie, responses that lack a status line) or an empty string if there are no headers.

      • ট্যাবআইডি

        সংখ্যা

        The ID of the tab in which the request takes place. Set to -1 if the request isn't related to a tab.

      • timeStamp

        সংখ্যা

        The time when this signal is triggered, in milliseconds since the epoch.

      • প্রকার

        How the requested resource will be used.

      • ইউআরএল

        স্ট্রিং

  • ফিল্টার
  • extraInfoSpec

onSendHeaders

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

Fired just before a request is going to be sent to the server (modifications of previous onBeforeSendHeaders callbacks are visible by the time onSendHeaders is fired).

প্যারামিটার

  • কলব্যাক

    ফাংশন

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

    (details: object) => void

    • বিস্তারিত

      বস্তু

      • ডকুমেন্ট আইডি

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

        Chrome 106+

        The UUID of the document making the request.

      • Chrome 106+

        The lifecycle the document is in.

      • frameId

        সংখ্যা

        The value 0 indicates that the request happens in the main frame; a positive value indicates the ID of a subframe in which the request happens. If the document of a (sub-)frame is loaded ( type is main_frame or sub_frame ), frameId indicates the ID of this frame, not the ID of the outer frame. Frame IDs are unique within a tab.

      • Chrome 106+

        The type of frame the request occurred in.

      • initiator

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

        Chrome 63+

        The origin where the request was initiated. This does not change through redirects. If this is an opaque origin, the string 'null' will be used.

      • পদ্ধতি

        স্ট্রিং

        Standard HTTP method.

      • parentDocumentId

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

        Chrome 106+

        The UUID of the parent document owning this frame. This is not set if there is no parent.

      • parentFrameId

        সংখ্যা

        ID of frame that wraps the frame which sent the request. Set to -1 if no parent frame exists.

      • requestHeaders

        HttpHeaders optional

        The HTTP request headers that have been sent out with this request.

      • requestId

        স্ট্রিং

        The ID of the request. Request IDs are unique within a browser session. As a result, they could be used to relate different events of the same request.

      • ট্যাবআইডি

        সংখ্যা

        The ID of the tab in which the request takes place. Set to -1 if the request isn't related to a tab.

      • timeStamp

        সংখ্যা

        The time when this signal is triggered, in milliseconds since the epoch.

      • প্রকার

        How the requested resource will be used.

      • ইউআরএল

        স্ট্রিং

  • ফিল্টার
  • extraInfoSpec