Reporting API का नया वर्शन उपलब्ध है. यह ज़्यादा निजी है और सभी ब्राउज़र पर काम करता है.
Reporting API से आपको अपनी साइट पर होने वाली उन गड़बड़ियों के बारे में पता चलता है जो वेबसाइट पर आने वाले लोग इस्तेमाल करते हैं. इससे आपको ब्राउज़र इंटरवेंशन, ब्राउज़र के क्रैश होने, कॉन्टेंट की सुरक्षा से जुड़ी नीति के उल्लंघन, सीओओपी/सीओईपी के उल्लंघन, और एपीआई को बंद करने से जुड़ी चेतावनियों वगैरह के बारे में जानकारी मिलती है.
रिपोर्टिंग एपीआई का नया वर्शन उपलब्ध है. एपीआई का नया वर्शन पतला है और यह सभी ब्राउज़र पर काम करता है.
खास जानकारी
साइट डेवलपर
अगर आपकी साइट के लिए पहले से ही रिपोर्टिंग की सुविधा उपलब्ध है: नए हेडर का इस्तेमाल करके v1 पर माइग्रेट करें
(Reporting-Endpoints
), लेकिन लेगसी हेडर को कुछ समय (Report-To
) तक इस्तेमाल न करें.
माइग्रेशन: कोड का उदाहरण देखें.
अगर आप अभी अपनी साइट में रिपोर्टिंग की सुविधा जोड़ रहे हैं: सिर्फ़ नए हेडर (Reporting-Endpoints
) का इस्तेमाल करें.
⚠️ दोनों मामलों में, उन सभी जवाबों पर Reporting-Endpoints
हेडर सेट करना न भूलें जिनसे
रिपोर्ट जनरेट हो सकती हैं.
रिपोर्टिंग सेवा देने वाले डेवलपर
अगर आप एंडपॉइंट सेवा का इस्तेमाल कर रहे हैं या खुद ही ऑपरेट कर रहे हैं, तो आपको या बाहरी डेवलपर जब Reporting API v1 (Reporting-Endpoints
हेडर) पर माइग्रेट करेंगे, तब आपको ज़्यादा ट्रैफ़िक मिलेगा.
जानकारी और कोड के उदाहरण के लिए पढ़ना जारी रखें!
नेटवर्क की गड़बड़ी का डेटा लॉग करने में
नेटवर्क गड़बड़ी लॉग करने का एक नया तरीका डेवलप किया जाएगा. इसके उपलब्ध होने के बाद, Reporting API v0 के बजाय उस नए तरीके का इस्तेमाल करें.
डेमो और कोड
- डेमो साइट: नया Reporting API (v1)
- डेमो साइट के लिए कोड
v0 और v1 के बीच अंतर
क्या बदलाव हो रहा है
- एपीआई का प्लैटफ़ॉर्म अलग है.
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 की मदद से, सिर्फ़ कुछ जवाबों पर रिपोर्टिंग एंडपॉइंट सेट किए जा सकते हैं. उस ऑरिजिन के अन्य दस्तावेज़ (पेज) अपने-आप इन ऐंबियंट एंडपॉइंट का इस्तेमाल करेंगे.
वर्शन 1 में, आपको उन सभी जवाबों पर Reporting-Endpoints
हेडर सेट करना होगा जिनसे रिपोर्ट जनरेट हो सकती हैं.
- दोनों एपीआई एक ही तरह की रिपोर्ट के साथ काम करते हैं. हालांकि, इसमें एक अपवाद है: v1 नेटवर्क की गड़बड़ी वाली रिपोर्ट के साथ काम नहीं करता. डेटा को दूसरी जगह भेजने के तरीके के बारे में ज़्यादा पढ़ें.
- v0 नहीं है और यह सभी ब्राउज़र पर काम नहीं करेगा. आने वाले समय में v1 को कई ब्राउज़र पर काम करने की संभावना है.
क्या नहीं बदलता
- रिपोर्ट के फ़ॉर्मैट और स्ट्रक्चर में कोई बदलाव नहीं हुआ है.
- ब्राउज़र से एंडपॉइंट को भेजा गया अनुरोध,
Content-type
application/reports+json
केPOST
अनुरोध के तौर पर सेव रहता है. - किसी खास तरह की रिपोर्ट के लिए कुछ एंडपॉइंट को मैप करने की सुविधा, v0 और v1 दोनों में काम करती है.
default
एंडपॉइंट की भूमिका में बदलाव नहीं हुआ है.Reporting API v1 का
ReportingObserver
पर कोई असर नहीं पड़ता.ReportingObserver
को निगरानी की जा सकने वाली सभी रिपोर्ट का ऐक्सेस मिलता रहेगा. साथ ही, उनका फ़ॉर्मैट एक जैसा होगा.
v0 और v1 के बीच के सभी अंतर
लेगसी Reporting API (v0)Report-To हेडर |
नया Reporting API (v1)Reporting-Endpoints हेडर |
|
---|---|---|
ब्राउज़र समर्थन | Chrome 69 और उसके बाद के वर्शन पर उपलब्ध है. | Chrome 96+ और Edge 96+. Firefox का इस्तेमाल आसानी से किया जा सकता है. Safari को कोई आपत्ति नहीं है. ब्राउज़र सिग्नल देखें. |
एंडपॉइंट | किसी भी एक से ज़्यादा रिपोर्ट कलेक्टर (हर एंडपॉइंट ग्रुप के लिए तय किए गए एक से ज़्यादा यूआरएल) को रिपोर्ट भेजता है. | खास रिपोर्ट कलेक्टर को रिपोर्ट भेजता है (हर एंडपॉइंट के लिए सिर्फ़ एक यूआरएल तय किया गया है). |
एपीआई का प्लैटफ़ॉर्म | नाम के एंडपॉइंट ग्रुप को कॉन्फ़िगर करने के लिए, `Report-To` हेडर का इस्तेमाल करता है. |
नाम के साथ एंडपॉइंट कॉन्फ़िगर करने के लिए, `Reporting-Endpoints` हेडर का इस्तेमाल करता है. |
इस एपीआई की मदद से, जनरेट की जा सकने वाली रिपोर्ट के टाइप |
|
नेटवर्क गड़बड़ी लॉगिंग (NEL) के अलावा, इसमें कोई बदलाव नहीं हुआ है. यह नए Reporting API (v1) में काम नहीं करता. |
रिपोर्ट का दायरा | मूल दस्तावेज़ के तौर पर दिखाता है. दस्तावेज़ के Report-To हेडर से, उस ऑरिजिन के अन्य दस्तावेज़ों (पेजों) पर असर पड़ता है.
रिपोर्ट का url फ़ील्ड अब भी हर दस्तावेज़ के हिसाब से अलग-अलग होता है.
|
दस्तावेज़. दस्तावेज़ के Reporting-Endpoints हेडर पर असर सिर्फ़ उस दस्तावेज़ पर होता है.
रिपोर्ट का url फ़ील्ड अब भी हर दस्तावेज़ के हिसाब से अलग-अलग होता है.
|
रिपोर्ट आइसोलेशन (बैचिंग) | ऐसे अलग-अलग दस्तावेज़ (पेज) या साइटें/ऑरिजिन, जो एक ही समय पर रिपोर्ट जनरेट करते हैं और जिनके रिपोर्टिंग एंडपॉइंट एक ही होते हैं उन्हें एक साथ बैच किया जाएगा: उन्हें रिपोर्टिंग एंडपॉइंट पर एक ही मैसेज में भेजा जाएगा. |
|
लोड बैलेंस करने की सुविधा / प्राथमिकताएं | हां | नहीं |
एंडपॉइंट डेवलपर: ज़्यादा ट्रैफ़िक की उम्मीद है
अगर आपने रिपोर्टिंग एंडपॉइंट के तौर पर अपना खुद का सर्वर सेट अप किया है या अगर आपको एक सेवा के तौर पर रिपोर्ट कलेक्टर डेवलप करना या उसे मैनेज करना है, तो उस एंडपॉइंट पर ज़्यादा ट्रैफ़िक आने की उम्मीद करें.
ऐसा इसलिए होता है, क्योंकि रिपोर्ट को Reporting API v1 के साथ बैच नहीं किया जाता, क्योंकि ये Reporting API v0 में होती हैं. इसलिए, जैसे-जैसे ऐप्लिकेशन डेवलपर, Reporting API v1 पर माइग्रेट करना शुरू करेंगे, रिपोर्ट की संख्या एक जैसी ही रहेगी. हालांकि, एंडपॉइंट सर्वर पर अनुरोधों की संख्या बढ़ जाएगी.
ऐप्लिकेशन डेवलपर: Reporting-Endpoints
पर माइग्रेट करें (v1)
ऐसे में आपको क्या करना चाहिए?
नए Reporting API (v1) का इस्तेमाल करने के कई फ़ायदे हैं ✅:
- ब्राउज़र सिग्नल पॉज़िटिव होते हैं, जिसका मतलब है कि v1 के लिए, क्रॉस-ब्राउज़र सपोर्ट की उम्मीद की जा सकती है. v0 सिर्फ़ Chrome औरEdge में काम करता है.
- एपीआई पतला है.
- टूलिंग नए Reporting API (v1) के हिसाब से डेवलप की जा रही है.
इन बातों को ध्यान में रखें:
- अगर आपकी साइट पहले से ही
Report-To
हेडर के साथ Reporting API v0 का इस्तेमाल कर रही है, तो Reporting API v1 पर माइग्रेट करें (डेटा को दूसरी जगह भेजने का तरीका देखें). अगर आपकी साइट पहले से ही, कॉन्टेंट की सुरक्षा से जुड़ी नीति के उल्लंघनों के लिए शिकायत करने की सुविधा का इस्तेमाल कर रही है, तो सीएसपी रिपोर्टिंग के लिए माइग्रेशन के खास तरीके देखें. - अगर आपकी साइट में पहले से Reporting API का इस्तेमाल नहीं हो रहा है और अब रिपोर्टिंग की सुविधा जोड़ी जा रही है, तो:
Reporting API (v1) के नए वर्शन (
Reporting-Endpoints
हेडर) का इस्तेमाल करें. इसका एक अपवाद है: अगर आपको नेटवर्क गड़बड़ी लॉग करने की सुविधा का इस्तेमाल करना है, तोReport-To
(v0) का इस्तेमाल करें. फ़िलहाल, नेटवर्क गड़बड़ी का डेटा लॉग करने की सुविधा Reporting API v1 के वर्शन में काम नहीं करती. नेटवर्क की गड़बड़ी का डेटा लॉग करने का एक नया तरीका डेवलप किया जाएगा. यह तब तक काम करेगा, जब तक यह उपलब्ध नहीं हो जाता, Reporting API v0 का इस्तेमाल करें. अगर आपको दूसरी तरह की रिपोर्ट के साथ-साथ, नेटवर्क की गड़बड़ी का पता लगाना है, तोReport-To
(v0) औरReporting-Endpoints
(v1) दोनों का इस्तेमाल करें. v0 से आपको नेटवर्क की गड़बड़ी का डेटा लॉग करने की सुविधा मिलती है और v1 से बाकी सभी तरह की रिपोर्ट मिलती हैं.
माइग्रेशन का तरीका
इस माइग्रेशन में आपका लक्ष्य, उन रिपोर्ट को खोना न पड़े जो आपको v0 के साथ मिलती थीं.
पहला चरण (अभी करें): दोनों हेडर का इस्तेमाल करें:
Report-To
(v0) औरReporting-Endpoints
(v1).इससे आपको ये फ़ायदे मिलते हैं:
Reporting-Endpoints
(v1) की मदद से, Chrome और Edge के नए क्लाइंट से मिली रिपोर्ट.Report-To
(v0) की मदद से, Chrome और Edge के पुराने क्लाइंट से मिली रिपोर्ट.
जो ब्राउज़र इंस्टेंस
Reporting-Endpoints
के साथ काम करते हैं वेReporting-Endpoints
का इस्तेमाल करेंगे. साथ ही, ऐसे इंस्टेंस जोReport-To
पर फ़ॉलबैक नहीं होंगे. v0 और v1 के लिए अनुरोध और रिपोर्ट का फ़ॉर्मैट एक जैसा है.दूसरा चरण (अभी करें): पक्का करें कि
Reporting-Endpoints
हेडर उन सभी जवाबों पर सेट हो जो रिपोर्ट जनरेट कर सकते हैं.v0 की मदद से, सिर्फ़ कुछ रिस्पॉन्स पर रिपोर्टिंग एंडपॉइंट सेट किए जा सकते हैं. साथ ही, उस ऑरिजिन पर मौजूद दूसरे दस्तावेज़ (पेज), इस "ऐंबियंट" एंडपॉइंट का इस्तेमाल करेंगे. v1 के साथ, स्कोपिंग में अंतर की वजह से, आपको उन सभी जवाबों पर
Reporting-Endpoints
हेडर सेट करना होगा जिनसे रिपोर्ट जनरेट हो सकती हैं.तीसरा चरण (बाद में शुरू करें): जब आपके सभी या ज़्यादातर उपयोगकर्ताओं ने Chrome या EDGE को बाद में इंस्टॉल करने (96 और इसके बाद के वर्शन) में अपडेट कर दिया हो, तब
Report-To
(v0) को हटाएं और सिर्फ़Reporting-Endpoints
को सेट अप करें.एक अपवाद: अगर आपको नेटवर्क गड़बड़ी लॉग करने की रिपोर्ट चाहिए, तो
Report-To
को तब तक बनाए रखें, जब तक कि नेटवर्क गड़बड़ी लॉग करने के लिए एक नया तरीका लागू नहीं हो जाता.
माइग्रेशन कुकबुक में कोड के उदाहरण देखें.
सीएसपी रिपोर्टिंग के लिए, माइग्रेट करने के तरीके
कॉन्टेंट की सुरक्षा से जुड़ी नीति के उल्लंघन की रिपोर्ट को दो तरीकों से कॉन्फ़िगर किया जा सकता है:
report-uri
डायरेक्टिव के ज़रिए, सिर्फ़ सीएसपी हेडर के साथ. यह सभी Chrome, Firefox, Safari, और Edge पर ब्राउज़र पर काम करता है. रिपोर्ट, कॉन्टेंट-टाइपapplication/csp-report
के साथ भेजी जाती हैं और इनका फ़ॉर्मैट, सीएसपी के लिए खास होता है. इन रिपोर्ट को "सीएसपी लेवल 2 की रिपोर्ट" कहा जाता है और ये Reporting API पर आधारित नहीं होती हैं.- Reporting API की मदद से, यानी कि
Report-To
हेडर (लेगसी) या नएReporting-Endpoints
(v1) के ज़रिए. यह सिर्फ़ Chrome और Edge पर काम करता है. रिपोर्ट के अनुरोधों का फ़ॉर्मैट, Reporting API के अन्य अनुरोधों की तरह ही होता है. साथ ही, इनका कॉन्टेंट टाइपapplication/reports+json
भी एक ही होता है.
पहले तरीके (सिर्फ़ report-uri
) का इस्तेमाल करने का सुझाव अब नहीं दिया जाता. साथ ही, दूसरे तरीके को इस्तेमाल करने के कुछ फ़ायदे हैं. इसकी मदद से, सभी तरह की रिपोर्ट के लिए एक ही तरीके से रिपोर्टिंग सेट अप की जा सकती है. साथ ही, एक जेनरिक एंडपॉइंट सेट किया जा सकता है. ऐसा इसलिए, क्योंकि Reporting API⏤CSP और अन्य⏤ का फ़ॉर्मैट एक ही application/reports+json
होता है.
हालांकि, सिर्फ़ कुछ ब्राउज़र पर report-to
काम करता है.
इसलिए, हमारा सुझाव है कि आप report-uri
को Reporting API के तरीके (Report-To
या बेहतर, Reporting-Endpoints
) के साथ रखें, ताकि कई ब्राउज़र से सीएसपी के उल्लंघन की रिपोर्ट मिल सके. report-uri
और report-to
की पहचान करने वाले ब्राउज़र में, report-to
मौजूद होने पर report-uri
को अनदेखा कर दिया जाएगा. जो ब्राउज़र सिर्फ़ report-uri
की पहचान करता है, उसमें सिर्फ़ report-uri
को माना जाएगा.
पहला चरण (अभी करें): अगर आपने इसे अभी तक नहीं जोड़ा है, तो
report-uri
के साथreport-to
जोड़ें. जिन ब्राउज़र पर सिर्फ़report-uri
(Firefox) काम करता है वेreport-uri
का इस्तेमाल करेंगे. वहीं,report-to
(Chrome, Edge) पर काम करने वाले ब्राउज़रreport-to
का इस्तेमाल करेंगे. नाम वाले जिन एंडपॉइंट का इस्तेमालreport-to
में करना है उनके बारे में बताने के लिए,Report-To
औरReporting-Endpoints
, दोनों हेडर का इस्तेमाल करें. इससे यह पक्का होता है कि आपको पुराने और नए, दोनों Chrome और Edge क्लाइंट से रिपोर्ट मिलें.तीसरा चरण (बाद में शुरू करें): जब आपके सभी या ज़्यादातर उपयोगकर्ताओं ने Chrome या EDGE को बाद में इंस्टॉल करने (96 और इसके बाद के वर्शन) में अपडेट कर दिया हो, तब
Report-To
(v0) को हटाएं और सिर्फ़Reporting-Endpoints
को सेट अप करें.report-uri
को रखें, ताकि आपको अब भी उन ब्राउज़र से रिपोर्ट मिलती रहें जिनमें सिर्फ़ यह सुविधा काम करती है.
सीएसपी रिपोर्टिंग माइग्रेशन में, इन चरणों के कोड के उदाहरण देखें.
माइग्रेशन: उदाहरण कोड
खास जानकारी
अगर COOP (Cross-Origin-Opener-Policy
हेडर), COEP (Cross-Origin-Embedder-Policy
) या दस्तावेज़ की नीति (Document-Policy
हेडर) के उल्लंघन की रिपोर्ट पाने के लिए, लेगसी Reporting API (v0) का इस्तेमाल किया जा रहा है,
तो Reporting API v1 पर माइग्रेट करते समय, आपको
इन नीति हेडर को बदलने की ज़रूरत नहीं है. आपको लेगसी Report-To
हेडर से नए
Reporting-Endpoints
हेडर में माइग्रेट करना होगा.
अगर सीएसपी (Content-Security-Policy
हेडर) के उल्लंघन की रिपोर्ट पाने के लिए, लेगसी Reporting API (v0) का इस्तेमाल किया जा रहा है, तो आपको Reporting API (v1) के नए वर्शन पर माइग्रेट करने के दौरान, अपने Content-Security-Policy
में बदलाव करना पड़ सकता है.
डेटा दूसरी जगह भेजने का बुनियादी तरीका
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(...) });
सीएसपी रिपोर्टिंग माइग्रेशन
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: ...
इसके बारे में और पढ़ें
- Reporting API का इस्तेमाल करके, अपने वेब ऐप्लिकेशन पर नज़र रखें (Reporting API पर बनी मुख्य पोस्ट)
- खास जानकारी: लेगसी Reporting API (v0)
- खास जानकारी: नया Reporting API (v1)
Unsplash पर Nine Koepfer / @enka80 की हीरो इमेज. इस इमेज में बदलाव किया गया. इस लेख पर मिली समीक्षाओं और सुझावों के लिए, इयन क्लेलैंड, ऐजी कितामुरा, और मिलिका मिहाजलिया का बहुत-बहुत धन्यवाद.