রিপোর্টিং API এর একটি নতুন সংস্করণ উপলব্ধ। এটি আরও ব্যক্তিগত এবং ব্রাউজার জুড়ে সমর্থিত হওয়ার সম্ভাবনা বেশি।
রিপোর্টিং এপিআই আপনাকে সেই ত্রুটি সম্পর্কে অবহিত করে যা দর্শকরা এটি ব্যবহার করার সময় আপনার সাইট জুড়ে ঘটে। এটি আপনাকে ব্রাউজার হস্তক্ষেপ, ব্রাউজার ক্র্যাশ, বিষয়বস্তু-নিরাপত্তা-নীতি লঙ্ঘন, COOP/COEP লঙ্ঘন, অবমূল্যায়ন সতর্কতা এবং আরও অনেক কিছুতে দৃশ্যমানতা দেয়৷
রিপোর্টিং API এর একটি নতুন সংস্করণ উপলব্ধ। নতুন এপিআই ক্ষীণ এবং ব্রাউজার জুড়ে সমর্থিত হওয়ার সম্ভাবনা বেশি।
সারাংশ
সাইট ডেভেলপার
আপনার যদি ইতিমধ্যেই আপনার সাইটের জন্য রিপোর্টিং কার্যকারিতা থাকে : নতুন হেডার ( Reporting-Endpoints
) ব্যবহার করে v1-এ স্থানান্তর করুন, তবে কিছু সময়ের জন্য লিগ্যাসি হেডারটি রাখুন ( Report-To
)। মাইগ্রেশন দেখুন: উদাহরণ কোড ।
আপনি যদি এখনই আপনার সাইটে রিপোর্টিং কার্যকারিতা যুক্ত করছেন : কেবলমাত্র নতুন শিরোনাম ( Reporting-Endpoints
) ব্যবহার করুন।
⚠️ উভয় ক্ষেত্রেই, রিপোর্ট তৈরি করতে পারে এমন সমস্ত প্রতিক্রিয়াতে Reporting-Endpoints
হেডার সেট করা নিশ্চিত করুন।
সেবা ডেভেলপারদের রিপোর্টিং
আপনি যদি একটি এন্ডপয়েন্ট সার্ভিস রক্ষণাবেক্ষণ করেন বা আপনার নিজের পরিচালনা করেন, আপনি বা বহিরাগত বিকাশকারীরা রিপোর্টিং API v1 ( Reporting-Endpoints
হেডার) এ স্থানান্তরিত হওয়ার সাথে সাথে আরও ট্র্যাফিকের আশা করুন৷
বিস্তারিত এবং উদাহরণ কোডের জন্য পড়তে থাকুন!
নেটওয়ার্ক ত্রুটি লগিং
নেটওয়ার্ক ত্রুটি লগিংয়ের জন্য একটি নতুন প্রক্রিয়া তৈরি করা হবে। একবার এটি উপলব্ধ হয়ে গেলে, রিপোর্টিং API v0 থেকে সেই নতুন পদ্ধতিতে স্যুইচ করুন।
ডেমো এবং কোড
- ডেমো সাইট: নতুন রিপোর্টিং API (v1)
- ডেমো সাইটের কোড
v0 এবং v1 এর মধ্যে পার্থক্য
কি পরিবর্তন হচ্ছে
- API পৃষ্ঠ ভিন্ন।
Report-To: { group: "main-endpoint", "max_age": 86400, "endpoints": [ { "url": ... }, { "url": ... }] }, { group: "default-endpoint", "max_age": 86400, "endpoints": [ { "url": ... }, { "url": ... }] } Document-Policy: ...; report-to main-endpoint
Reporting-Endpoints: main-endpoint="https://reports.example/main", default="https://reports.example/default" Document-Policy: ...; report-to main-endpoint
- প্রতিবেদনের পরিধি ভিন্ন।
v0 দিয়ে, আপনি শুধুমাত্র কিছু প্রতিক্রিয়ার জন্য রিপোর্টিং এন্ডপয়েন্ট সেট করতে পারেন। সেই মূলের অন্যান্য নথি (পৃষ্ঠা) স্বয়ংক্রিয়ভাবে এই পরিবেষ্টিত শেষ পয়েন্টগুলি ব্যবহার করবে।
v1 এর সাথে, আপনাকে প্রতিবেদন তৈরি করতে পারে এমন সমস্ত প্রতিক্রিয়ার উপর Reporting-Endpoints
হেডার সেট করতে হবে।
- উভয় APIই একই ধরনের রিপোর্ট সমর্থন করে, একটি ব্যতিক্রম সহ: v1 নেটওয়ার্ক ত্রুটি রিপোর্ট সমর্থন করে না। মাইগ্রেশন ধাপে আরও পড়ুন।
- v0 ব্রাউজার জুড়ে সমর্থিত নয় এবং হবে না। v1 ভবিষ্যতে একাধিক ব্রাউজারে সমর্থিত হওয়ার সম্ভাবনা বেশি।
যা অপরিবর্তিত থাকে
- প্রতিবেদনের বিন্যাস এবং গঠন অপরিবর্তিত।
- ব্রাউজার দ্বারা এন্ডপয়েন্টে পাঠানো অনুরোধটি
Content-type
application/reports+json
এর একটিPOST
অনুরোধ হিসেবে রয়ে গেছে। - নির্দিষ্ট প্রতিবেদনের প্রকারে নির্দিষ্ট প্রান্তের ম্যাপিং v0 এবং v1 উভয় ক্ষেত্রেই সমর্থিত।
-
default
এন্ডপয়েন্টের ভূমিকা অপরিবর্তিত থাকে। Reporting API v1-এর
ReportingObserver
এ কোন প্রভাব নেই।ReportingObserver
সমস্ত পর্যবেক্ষণযোগ্য প্রতিবেদনে অ্যাক্সেস পেতে থাকে এবং তাদের বিন্যাস অভিন্ন।
v0 এবং v1 এর মধ্যে সমস্ত পার্থক্য
লিগ্যাসি রিপোর্টিং API (v0)Report-To হেডার | নতুন রিপোর্টিং API (v1)Reporting-Endpoints হেডার | |
---|---|---|
ব্রাউজার সমর্থন | Chrome 69+ এবং Edge 69+। | Chrome 96+ এবং Edge 96+। ফায়ারফক্স সহায়ক। সাফারি আপত্তি করে না। ব্রাউজার সংকেত দেখুন। |
শেষবিন্দু | Sends reports to any of multiple report collectors (multiple URLs defined per endpoint group). | নির্দিষ্ট রিপোর্ট সংগ্রাহকদের কাছে রিপোর্ট পাঠায় (এন্ডপয়েন্ট প্রতি শুধুমাত্র একটি ইউআরএল সংজ্ঞায়িত)। |
API পৃষ্ঠ | নামযুক্ত এন্ডপয়েন্ট গ্রুপ কনফিগার করতে `Report-To` হেডার ব্যবহার করে। | নামযুক্ত শেষ পয়েন্ট কনফিগার করতে `Reporting-Endpoints` হেডার ব্যবহার করে। |
প্রতিবেদনের প্রকারগুলি যা এই API এর মাধ্যমে তৈরি করা যেতে পারে |
| নেটওয়ার্ক ত্রুটি লগিং (NEL) ব্যতীত অপরিবর্তিত: এটি নতুন রিপোর্টিং API (v1) তে সমর্থিত নয় ৷ |
প্রতিবেদনের সুযোগ | উৎপত্তি। একটি নথির Report-To শিরোনাম সেই উত্স থেকে অন্যান্য নথি (পৃষ্ঠাগুলি) প্রভাবিত করে। একটি প্রতিবেদনের url ক্ষেত্র এখনও প্রতি নথিতে পরিবর্তিত হয়। | দলিল। একটি নথির Reporting-Endpoints হেডার শুধুমাত্র সেই নথিকে প্রভাবিত করে৷ একটি প্রতিবেদনের url ক্ষেত্র এখনও প্রতি নথিতে পরিবর্তিত হয়। |
রিপোর্ট বিচ্ছিন্নতা (ব্যাচিং) | বিভিন্ন দস্তাবেজ (পৃষ্ঠা) বা সাইট/উৎস যেগুলি একই সময়ে একটি প্রতিবেদন তৈরি করে এবং যেগুলির একই রিপোর্টিং এন্ডপয়েন্ট রয়েছে তাদের একসাথে ব্যাচ করা হবে: সেগুলি রিপোর্টিং এন্ডপয়েন্টে একই বার্তায় পাঠানো হবে৷ |
|
লোড ব্যালেন্সিং / অগ্রাধিকারের জন্য সমর্থন | হ্যাঁ | না |
এন্ডপয়েন্ট ডেভেলপার: আরও ট্রাফিক আশা করুন
আপনি যদি একটি রিপোর্টিং এন্ডপয়েন্ট হিসাবে আপনার নিজস্ব সার্ভার সেট আপ করে থাকেন, অথবা যদি আপনি একটি পরিষেবা হিসাবে একটি রিপোর্ট সংগ্রাহক ডেভেলপ বা বজায় রাখেন, তাহলে সেই এন্ডপয়েন্টে আরও ট্রাফিক আশা করুন৷
কারণ রিপোর্টগুলি রিপোর্টিং API v1 এর সাথে ব্যাচ করা হয় না যেমনটি রিপোর্টিং API v0 এর সাথে থাকে। অতএব, অ্যাপ্লিকেশন বিকাশকারীরা রিপোর্টিং API v1-এ স্থানান্তরিত করা শুরু করলে, রিপোর্টের সংখ্যা একই রকম থাকবে, কিন্তু শেষ পয়েন্ট সার্ভারে অনুরোধের পরিমাণ বৃদ্ধি পাবে।
অ্যাপ্লিকেশন ডেভেলপার: Reporting-Endpoints
স্থানান্তর করুন (v1)
আপনার কি করা উচিত?
নতুন রিপোর্টিং API (v1) ব্যবহার করে বেশ কিছু সুবিধা রয়েছে ✅:
- ব্রাউজার সিগন্যাল ইতিবাচক , যার অর্থ হল ক্রস-ব্রাউজার সমর্থন v1-এর জন্য আশা করা যেতে পারে (v0 এর বিপরীতে যা শুধুমাত্র Chrome এবং Edge-এ সমর্থিত)।
- এপিআই ক্ষীণ।
- নতুন রিপোর্টিং API (v1) এর চারপাশে টুলিং তৈরি করা হচ্ছে।
এটি মাথায় রেখে:
- যদি আপনার সাইট ইতিমধ্যেই
Report-To
শিরোনামের সাথে Reporting API v0 ব্যবহার করে, তাহলে Reporting API v1-এ স্থানান্তর করুন ( মাইগ্রেশনের ধাপগুলি দেখুন)। আপনার সাইট যদি ইতিমধ্যেই বিষয়বস্তু-নিরাপত্তা-নীতি লঙ্ঘনের জন্য রিপোর্টিং কার্যকারিতা ব্যবহার করে, তাহলে CSP রিপোর্টিংয়ের জন্য নির্দিষ্ট মাইগ্রেশন পদক্ষেপগুলি পরীক্ষা করুন৷ - যদি আপনার সাইট ইতিমধ্যে রিপোর্টিং API ব্যবহার না করে এবং আপনি এখন রিপোর্টিং কার্যকারিতা যোগ করছেন: নতুন রিপোর্টিং API (v1) (
Reporting-Endpoints
হেডার) ব্যবহার করুন। এর একটি ব্যতিক্রম আছে : যদি আপনার নেটওয়ার্ক ত্রুটি লগিং ব্যবহার করতে হয়,Report-To
(v0) ব্যবহার করুন। নেটওয়ার্ক ত্রুটি লগিং বর্তমানে রিপোর্টিং API v1-এ সমর্থিত নয়৷ নেটওয়ার্ক ত্রুটি লগিং এর জন্য একটি নতুন প্রক্রিয়া তৈরি করা হবে⏤ যতক্ষণ না এটি উপলব্ধ হয়, রিপোর্টিং API v0 ব্যবহার করুন৷ আপনার যদি অন্যান্য রিপোর্টের ধরনগুলির সাথে নেটওয়ার্ক ত্রুটি লগিং প্রয়োজন হয়,Report-To
(v0) এবংReporting-Endpoints
(v1) উভয়ই ব্যবহার করুন। v0 আপনাকে নেটওয়ার্ক ত্রুটি লগিং দেয় এবং v1 আপনাকে অন্য সব ধরনের রিপোর্ট দেয়।
মাইগ্রেশন পদক্ষেপ
এই মাইগ্রেশনে আপনার লক্ষ্য হল v0 এর সাথে আপনি যে রিপোর্টগুলি পেতেন সেগুলি না হারানো ৷
ধাপ 1 (এখন করুন) : উভয় শিরোনাম ব্যবহার করুন:
Report-To
(v0) এবংReporting-Endpoints
(v1)।এর সাথে, আপনি পাবেন:
-
Reporting-Endpoints
(v1) এর জন্য নতুন Chrome এবং Edge ক্লায়েন্টদের থেকে রিপোর্টগুলিকে ধন্যবাদ৷ - পুরানো ক্রোম এবং এজ ক্লায়েন্টদের থেকে রিপোর্ট
Report-To
(v0) কে ধন্যবাদ।
যে ব্রাউজার দৃষ্টান্তগুলি
Reporting-Endpoints
সমর্থন করে সেগুলিReporting-Endpoints
ব্যবহার করবে, এবং যে দৃষ্টান্তগুলিReport-To
তে ফিরে আসবে না৷ অনুরোধ এবং প্রতিবেদনের বিন্যাস v0 এবং v1 এর জন্য একই।-
ধাপ 2 (এখন করুন):
Reporting-Endpoints
শিরোনামটি রিপোর্ট তৈরি করতে পারে এমন সমস্ত প্রতিক্রিয়াতে সেট করা আছে তা নিশ্চিত করুন।v0 দিয়ে, আপনি শুধুমাত্র কিছু প্রতিক্রিয়ার উপর রিপোর্টিং এন্ডপয়েন্ট সেট করতে বেছে নিতে পারেন এবং সেই মূলের অন্যান্য নথি (পৃষ্ঠা) এই "পরিবেষ্টিত" এন্ডপয়েন্ট ব্যবহার করবে। v1 এর সাথে, স্কোপিংয়ের পার্থক্যের কারণে, আপনাকে রিপোর্ট তৈরি করতে পারে এমন সমস্ত প্রতিক্রিয়ার উপর
Reporting-Endpoints
হেডার সেট করতে হবে।ধাপ 3 (পরে শুরু করুন): একবার আপনার সমস্ত বা অধিকাংশ ব্যবহারকারীর পরবর্তী Chrome বা এজ ইনস্টলে (96 এবং পরবর্তী) আপডেট হয়ে গেলে,
Report-To
(v0) সরান এবং শুধুমাত্রReporting-Endpoints
রাখুন।একটি ব্যতিক্রম: যদি আপনার নেটওয়ার্ক ত্রুটি লগিং প্রতিবেদনের প্রয়োজন হয়, নেটওয়ার্ক ত্রুটি লগিং এর জন্য একটি নতুন প্রক্রিয়া না হওয়া পর্যন্ত
Report-To
রাখুন।
মাইগ্রেশন কুকবুকে কোডের উদাহরণ দেখুন।
CSP রিপোর্টিং এর জন্য মাইগ্রেশন পদক্ষেপ
দুটি উপায়ে বিষয়বস্তু-নিরাপত্তা-নীতি লঙ্ঘন প্রতিবেদন কনফিগার করা যেতে পারে:
-
report-uri
নির্দেশের মাধ্যমে একা সিএসপি হেডারের সাথে। এটি ক্রোম, ফায়ারফক্স, সাফারি এবং এজ জুড়ে বিস্তৃত ব্রাউজার সমর্থন রয়েছে। প্রতিবেদনগুলি বিষয়বস্তু-প্রকারapplication/csp-report
সাথে পাঠানো হয় এবং CSP-এর জন্য নির্দিষ্ট একটি বিন্যাস থাকে। এই রিপোর্টগুলিকে "CSP লেভেল 2 রিপোর্ট" বলা হয় এবং রিপোর্টিং API এর উপর নির্ভর করে না । - রিপোর্টিং এপিআই সহ, এটি
Report-To
হেডার (লিগ্যাসি) বা নতুনReporting-Endpoints
(ভি 1) এর মাধ্যমে। এটি কেবল ক্রোম এবং প্রান্তে সমর্থিত। প্রতিবেদনের অনুরোধগুলির অন্যান্য রিপোর্টিং API অনুরোধগুলির মতো একই বিন্যাস এবং একই বিষয়বস্তু-প্রকারapplication/reports+json
।
প্রথম পদ্ধতি ব্যবহার করা (শুধুমাত্র report-uri
) আর সুপারিশ করা হয় না এবং দ্বিতীয় পদ্ধতি ব্যবহার করার কিছু সুবিধা রয়েছে। বিশেষ করে, এটি আপনাকে সমস্ত রিপোর্টের ধরনগুলির জন্য রিপোর্টিং সেট আপ করার পাশাপাশি একটি জেনেরিক এন্ডপয়েন্ট সেট করার জন্য একটি একক উপায় ব্যবহার করতে সক্ষম করে (কারণ রিপোর্টিং API⏤CSP এবং অন্যদের⏤ একই ফর্ম্যাট application/reports+json
মাধ্যমে উত্পন্ন সমস্ত রিপোর্ট অনুরোধ রয়েছে application/reports+json
যাইহোক, শুধুমাত্র কয়েকটি ব্রাউজার report-to
সমর্থন করে । তাই একাধিক ব্রাউজার থেকে CSP লঙ্ঘনের রিপোর্ট পাওয়ার জন্য আপনাকে Reporting API অ্যাপ্রোচ ( Report-To
বা ভাল, Reporting-Endpoints
) এর পাশাপাশি report-uri
রাখার পরামর্শ দেওয়া হচ্ছে। একটি ব্রাউজারে যা report-uri
এবং report-to
স্বীকৃতি দেয়, report-to
উপস্থিত থাকলে report-uri
উপেক্ষা করা হবে। একটি ব্রাউজারে যা শুধুমাত্র report-uri
স্বীকৃতি দেয়, শুধুমাত্র report-uri
বিবেচনা করা হবে।
ধাপ 1 (এখন করুন) : আপনি যদি এটি এখনও যোগ না করে থাকেন, তাহলে
report-uri
পাশাপাশিreport-to
যোগ করুন। যেসব ব্রাউজার শুধুমাত্রreport-uri
(ফায়ারফক্স) সমর্থন করে তারাreport-uri
ব্যবহার করবে এবং যে ব্রাউজারগুলিreport-to
(Chrome, Edge) সমর্থন করে তারাreport-to
ব্যবহার করবে।report-to
তে আপনি যে নামগুলি ব্যবহার করবেন তা নির্দিষ্ট করতে,Report-To
এবংReporting-Endpoints
উভয় শিরোনাম ব্যবহার করুন। এটি নিশ্চিত করে যে আপনি পুরানো এবং নতুন উভয় ক্রোম এবং এজ ক্লায়েন্টদের কাছ থেকে রিপোর্ট পাবেন৷ধাপ 3 (পরে শুরু করুন): একবার আপনার সমস্ত বা অধিকাংশ ব্যবহারকারীর পরবর্তী Chrome বা এজ ইনস্টলে (96 এবং পরবর্তী) আপডেট হয়ে গেলে,
Report-To
(v0) সরান এবং শুধুমাত্রReporting-Endpoints
রাখুন।report-uri
রাখুন যাতে আপনি এখনও ব্রাউজারগুলির জন্য রিপোর্ট পান যা শুধুমাত্র এটি সমর্থন করে।
CSP রিপোর্টিং মাইগ্রেশনের এই ধাপগুলির জন্য কোড উদাহরণ দেখুন।
মাইগ্রেশন: উদাহরণ কোড
ওভারভিউ
আপনি যদি aa COOP ( Cross-Origin-Opener-Policy
হেডার), একটি COEP ( Cross-Origin-Embedder-Policy
) বা একটি ডকুমেন্ট পলিসি ( Document-Policy
হেডার) এর লঙ্ঘন প্রতিবেদন পেতে লিগ্যাসি রিপোর্টিং API (v0) ব্যবহার করেন ): আপনি রিপোর্টিং API v1-এ স্থানান্তরিত হওয়ার সাথে সাথে আপনাকে এই নীতি শিরোনামগুলিকে পরিবর্তন করতে হবে না। আপনার যা প্রয়োজন তা হল লিগ্যাসি Report-To
হেডার থেকে নতুন Reporting-Endpoints
হেডারে স্থানান্তর করা।
আপনি যদি একটি CSP ( Content-Security-Policy
শিরোনাম) এর জন্য লঙ্ঘন প্রতিবেদন পেতে লিগ্যাসি রিপোর্টিং API (v0) ব্যবহার করেন, তাহলে আপনাকে নতুন রিপোর্টিং API (এপিআই) তে স্থানান্তরের অংশ হিসাবে আপনার Content-Security-Policy
পরিবর্তন করতে হতে পারে v1)।
বেসিক মাইগ্রেশন
Report-To: { group: "main-endpoint", "endpoints": [ { "url": "https://reports.example/main" }] }, { group: "default-endpoint", "endpoints": [ { "url": "https://reports.example/default" }] }
Reporting-Endpoints: main-endpoint="https://reports.example/main", default="https://reports.example/default" Report-To: { group: "main-endpoint", "max_age": 86400, "endpoints": [ { "url": "https://reports.example/main" }] }, { group: "default-endpoint", "max_age": 86400, "endpoints": [ { "url": "https://reports.example/default" }] }
Reporting-Endpoints: main-endpoint="https://reports.example/main", default="https://reports.example/default"
মনে রাখবেন যে v1 দিয়ে, আপনি এখনও নির্দিষ্ট রিপোর্টের ধরন নির্দিষ্ট প্রান্তে পাঠাতে পারেন। কিন্তু প্রতি এন্ডপয়েন্টে আপনার শুধুমাত্র একটি ইউআরএল থাকতে পারে।
সব পৃষ্ঠা পর্যবেক্ষণ
app.get("/", (request, response) => { response.set("Report-To", …) response.render(...) }); app.get("/page1", (request, response) => { response.render(...) });
// Use a middleware to set the reporting endpoint(s) for *all* requests. app.use(function(request, response, next) { response.set("Reporting-Endpoints", …); next(); }); app.get("/", (request, response) => { response.render(...) }); app.get("/page1", (request, response) => { response.render(...) });
CSP রিপোর্টিং মাইগ্রেশন
Content-Security-Policy: ...; report-uri https://reports.example/main
Content-Security-Policy: ...; report-uri https://reports.example/main; report-to main-endpoint Report-To: main-endpoint="https://reports.example/main"
Content-Security-Policy: ...; report-uri https://reports.example/main; report-to main-endpoint Reporting-Endpoints: main-endpoint="https://reports.example/main" Report-To: ...
আরও পড়া
- রিপোর্টিং এপিআই (রিপোর্টিং এপিআই-এর প্রধান পোস্ট) দিয়ে আপনার ওয়েব অ্যাপ্লিকেশন নিরীক্ষণ করুন
- স্পেসিফিকেশন: উত্তরাধিকার প্রতিবেদন এপিআই (ভি 0)
- স্পেসিফিকেশন: নতুন রিপোর্টিং API (v1)
এই নিবন্ধে তাদের পর্যালোচনা এবং পরামর্শের জন্য ইয়ান ক্লেল্যান্ড, ইজি কিতামুরা এবং মিলিকা মিহাজলিজাকে অনেক ধন্যবাদ।