अनुमतियों की नीति से ब्राउज़र की सुविधाओं को कंट्रोल करना

मैनेज करें कि आपके पेज और आपके पेज पर मौजूद तीसरे पक्ष के iframe, ब्राउज़र की सुविधाओं को कैसे ऐक्सेस कर सकते हैं.

Kevin K. Lee
Kevin K. Lee

अनुमतियों से जुड़ी नीति को पहले सुविधा नीति के नाम से जाना जाता था. इस नीति की मदद से डेवलपर, पेज, उसके iframe, और सबरिसॉर्स के लिए उपलब्ध ब्राउज़र की सुविधाओं को कंट्रोल कर सकता है. इसके लिए, ब्राउज़र के लिए नीतियों का एक सेट तय किया जाता है, ताकि वह लागू हो. ये नीतियां, रिस्पॉन्स हेडर ऑरिजिन सूची में दिए गए ऑरिजिन पर लागू होती हैं. ऑरिजिन सूची में, एक जैसे ऑरिजिन और/या क्रॉस-ऑरिजिन शामिल हो सकते हैं. इससे डेवलपर, ब्राउज़र की सुविधाओं के लिए पहले पक्ष और तीसरे पक्ष के ऐक्सेस को कंट्रोल कर सकता है.

बेहतर सुविधाओं का ऐक्सेस देने का आखिरी फ़ैसला, उपयोगकर्ता का होता है. इसके लिए, उपयोगकर्ता को प्रॉम्प्ट के ज़रिए साफ़ तौर पर अनुमति देनी होगी.

अनुमतियों से जुड़ी नीति की मदद से, टॉप-लेवल साइट यह तय कर सकती है कि वह और उसके तीसरे पक्ष किस तरह का इस्तेमाल करना चाहते हैं. साथ ही, इससे उपयोगकर्ता पर यह तय करने का बोझ कम हो जाता है कि सुविधा को ऐक्सेस करने का अनुरोध मान्य है या नहीं. उदाहरण के लिए, अनुमतियों से जुड़ी नीति के ज़रिए सभी तीसरे पक्षों के लिए जियोलोकेशन की सुविधा को ब्लॉक करके, डेवलपर को इस बात का भरोसा हो सकता है कि किसी तीसरे पक्ष को उपयोगकर्ता की जगह की जानकारी का ऐक्सेस नहीं मिलेगा.

अनुमतियों की नीति में बदलाव

अनुमतियों से जुड़ी नीति को पहले सुविधा नीति के नाम से जाना जाता था. मुख्य सिद्धांत पहले जैसे ही हैं, लेकिन नाम के साथ कुछ अहम बदलाव भी किए गए हैं.

स्ट्रक्चर्ड फ़ील्ड का इस्तेमाल

स्ट्रक्चर्ड फ़ील्ड, एचटीटीपी हेडर फ़ील्ड की वैल्यू को पार्स करने और क्रम तय करने के लिए, सामान्य डेटा स्ट्रक्चर का सेट उपलब्ध कराते हैं. Fastly की ब्लॉग पोस्ट "स्ट्रक्चर्ड हेडर फ़ील्ड की मदद से एचटीटीपी को बेहतर बनाना" से स्ट्रक्चर्ड फ़ील्ड के बारे में ज़्यादा जानें.

ओल्ड
  geolocation 'self' https://example.com; camera 'none'

सुविधा नीति से पहले.

नए दर्शक
  geolocation=(self "https://example.com"), camera=()

अब अनुमतियों की नीति के साथ.

हेडर को iframe allow एट्रिब्यूट के साथ जोड़ें

सुविधा के लिए बनी नीति की मदद से, सुविधा को क्रॉस-ऑरिजिन फ़्रेम में जोड़ा जा सकता है. इसके लिए, आपको हेडर ऑरिजिन सूची में ऑरिजिन को जोड़ना होगा या iframe टैग में allow एट्रिब्यूट जोड़ना होगा. अनुमतियों की नीति का इस्तेमाल करने पर, ऑरिजिन सूची में कोई क्रॉस-ऑरिजिन फ़्रेम जोड़ने पर, उस ऑरिजिन के iframe टैग में allow एट्रिब्यूट शामिल होना चाहिए. अगर जवाब में अनुमतियों की नीति का हेडर शामिल नहीं है, तो ऑरिजिन की सूची को * की डिफ़ॉल्ट वैल्यू माना जाता है. Iframe में allow एट्रिब्यूट जोड़ने से, इस सुविधा को ऐक्सेस किया जा सकता है.

इसलिए, हम डेवलपर को सुझाव देते हैं कि वे रिस्पॉन्स में अनुमतियों की नीति का हेडर सेट करें. इससे उन क्रॉस-ऑरिजिन iframe को इस सुविधा को ऐक्सेस करने से रोका जा सकेगा जो ऑरिजिन की सूची में नहीं हैं, भले ही allow मौजूद हो.

सुविधा नीति का इस्तेमाल Chrome 88 के बाद भी किया जा सकता है, लेकिन यह अनुमतियों की नीति के लिए उपनाम के तौर पर काम करती है. सिंटैक्स के अलावा, लॉजिक में कोई अंतर नहीं है. अगर अनुमतियों की नीति और सुविधा नीति, दोनों के हेडर एक साथ इस्तेमाल किए जाते हैं, तो Permissions-Policy हेडर को ज़्यादा प्राथमिकता दी जाएगी. साथ ही, यह Feature-Policy हेडर से मिली वैल्यू को ओवरराइट कर देगा.

मैं अनुमतियों से जुड़ी नीति का इस्तेमाल कैसे करूं?

खास जानकारी

इसके बारे में ज़्यादा जानकारी देने से पहले, चलिए एक ऐसी सामान्य स्थिति पर नज़र डालते हैं जहां आपके पास किसी वेबसाइट का मालिकाना हक है. साथ ही, आपको यह कंट्रोल करना है कि आपकी साइट और तीसरे पक्ष का कोड, ब्राउज़र की सुविधाओं का कैसे इस्तेमाल करे.

  • आपकी साइट https://your-site.example है.
  • आपकी साइट, एक ही ऑरिजिन (https://your-site.example) के लिए, iframe को एम्बेड करती है.
  • आपकी साइट https://trusted-site.example से ऐसा iframe एम्बेड करती है जिस पर आप भरोसा करते हैं.
  • आपकी साइट पर https://ad.example के दिखाए गए विज्ञापन भी दिखते हैं.
  • आप भौगोलिक स्थान की अनुमति सिर्फ़ अपनी साइट और भरोसेमंद साइट के लिए देना चाहते हैं, न कि विज्ञापन के लिए.

इस मामले में, नीचे दिए गए हेडर का इस्तेमाल करें:

Permissions-Policy: geolocation=(self "https://trusted-site.example")

साथ ही, भरोसेमंद साइट के लिए, allow एट्रिब्यूट को iframe टैग पर साफ़ तौर पर सेट करें:

<iframe src="https://trusted-site.example" allow="geolocation">

अनुमतियों की नीति के इस्तेमाल की खास जानकारी वाला डायग्राम.

इस उदाहरण में, हेडर ऑरिजिन सूची की मदद से सिर्फ़ आपकी साइट (self) और trusted-site.example को जियोलोकेशन सुविधा का इस्तेमाल करने की अनुमति दी गई है. ad.example को भौगोलिक स्थान का इस्तेमाल करने की अनुमति नहीं है.

  1. उपयोगकर्ता की सहमति से, आपकी साइट your-site.example को भौगोलिक स्थान की सुविधा का इस्तेमाल करने की अनुमति है.
  2. एक ही ऑरिजिन वाले iframe (your-site.example) को allow एट्रिब्यूट का इस्तेमाल किए बिना, इस सुविधा का इस्तेमाल करने की अनुमति है.
  3. किसी ऐसे सबडोमेन (subdomain.your-site-example) से दिखाए गए iframe को इस सुविधा का इस्तेमाल करने से ब्लॉक किया गया है जिसे मूल सूची में नहीं जोड़ा गया था और जिसके लिए अनुमति एट्रिब्यूट को iframe टैग पर सेट किया गया था. अलग-अलग सबडोमेन को एक ही साइट के, लेकिन क्रॉस-ऑरिजिन वाले डोमेन माना जाता है.
  4. क्रॉस-ऑरिजिन iframe (trusted-site.example) को ऑरिजिन सूची में जोड़ा गया और जिसके iframe टैग पर allow एट्रिब्यूट सेट किया गया है, उसे इस सुविधा का इस्तेमाल करने की अनुमति है.
  5. ऑरिजिन सूची में, allow एट्रिब्यूट के बिना जोड़े गए क्रॉस-ऑरिजिन iframe (trusted-site.example) को इस सुविधा का इस्तेमाल करने से ब्लॉक किया गया है.
  6. जिस क्रॉस-ऑरिजिन iframe (ad.example) को मूल सूची में नहीं जोड़ा गया है उसे इस सुविधा का इस्तेमाल करने से रोक दिया जाता है. भले ही, iframe टैग में allow एट्रिब्यूट शामिल हो.

Permissions-Policy एचटीटीपी रिस्पॉन्स हेडर

इसके बाद, उपयोगकर्ता एक अनुरोध करता है, सर्वर अनुमतियों की नीति के हेडर के साथ जवाब देता है. इसके बाद, ब्राउज़र उस हेडर के आधार पर ऐक्सेस देता है.

Permissions-Policy: &lt;feature&gt;=(&lt;token&gt;|&lt;origin(s)&gt;)

किसी सुविधा के लिए मंज़ूर किए गए ऑरिजिन सेट करने के लिए, सर्वर से रिस्पॉन्स में Permissions-Policy हेडर का इस्तेमाल करें. हेडर वैल्यू में टोकन और ऑरिजिन की स्ट्रिंग, एक साथ इस्तेमाल हो सकती हैं. सभी ऑरिजिन के लिए उपलब्ध टोकन * और एक ही ऑरिजिन के लिए self होते हैं.

अगर आपका हेडर कई सुविधाओं के लिए है, तो सुविधाओं को कॉमा लगाकर अलग करें. अगर एक से ज़्यादा ऑरिजिन की सूची दी जाती है, तो ऑरिजिन की सूची में हर ऑरिजिन को स्पेस से अलग करें. जिन हेडर में ऐसे ऑरिजिन की सूची होती है जो क्रॉस-ऑरिजिन अनुरोध के तौर पर शामिल हैं, उनके लिए iframe टैग में allow एट्रिब्यूट शामिल होना चाहिए.

यहां की-वैल्यू पेयर के कुछ उदाहरण दिए गए हैं:

  • सिंटैक्स: [FEATURE]=*
    • सभी ऑरिजिन पर लागू होने वाली नीति
    • उदाहरण: geolocation=*
  • सिंटैक्स: [FEATURE]=(self)
    • समान-मूल पर लागू नीति
    • उदाहरण: geolocation=(self)
  • सिंटैक्स: [FEATURE]=(self [ORIGIN(s)])
    • एक ही ऑरिजिन और बताए गए ऑरिजिन पर लागू नीति
    • उदाहरण: geolocation=(self "https://a.example" "https://b.example")
    • self, https://your-site.example का शॉर्टहैंड है
  • सिंटैक्स: [FEATURE]=([ORIGIN(s)])
    • एक ही ऑरिजिन और बताए गए ऑरिजिन पर लागू नीति
    • उदाहरण: geolocation=("https://your-site.example" "https://a.example" "https://b.example")
    • इस सिंटैक्स का इस्तेमाल करते समय, किसी एक ऑरिजिन को एम्बेडर का ऑरिजिन होना चाहिए. अगर एम्बेड किए गए पेज को अनुमतियां नहीं दी जाती हैं, तो उस पेज में एम्बेड किए गए iframe भी ब्लॉक कर दिए जाएंगे. भले ही, उन्हें ऑरिजिन सूची में जोड़ा गया हो, क्योंकि अनुमतियों की नीति में अनुमतियां दी जाती हैं. self टोकन का भी इस्तेमाल किया जा सकता है.
  • सिंटैक्स: [FEATURE]=()
    • सभी ऑरिजिन के लिए सुविधा को ब्लॉक किया गया
    • उदाहरण: geolocation=()

अलग-अलग सबडोमेन और पाथ

https://your-site.example और https://subdomain.your-site.example जैसे अलग-अलग सबडोमेन को एक ही साइट के, क्रॉस-ऑरिजिन माना जाता है. इसलिए, ऑरिजिन सूची में कोई सबडोमेन जोड़ने से, उसी साइट के किसी दूसरे सबडोमेन का ऐक्सेस नहीं मिलता. एम्बेड किया गया हर वह सबडोमेन जो इस सुविधा का इस्तेमाल करना चाहता है उसे ऑरिजिन की सूची से अलग से जोड़ना होगा. उदाहरण के लिए, अगर उपयोगकर्ता के ब्राउज़िंग विषयों को सिर्फ़ Permissions-Policy: browsing-topics=(self) हेडर के साथ एक ही ऑरिजिन को ऐक्सेस करने की अनुमति है, तो उसी साइट के किसी दूसरे सबडोमेन https://subdomain.your-site.example के iframe के पास विषयों का ऐक्सेस नहीं होगा.

https://your-site.example और https://your-site.example/embed जैसे अलग-अलग पाथ को एक ही ऑरिजिन वाला माना जाता है. साथ ही, अलग-अलग पाथ को ऑरिजिन सूची में शामिल करना ज़रूरी नहीं होता.

Iframe allow एट्रिब्यूट

Iframes सेटअप

क्रॉस-ऑरिजिन इस्तेमाल के लिए, सुविधा को ऐक्सेस करने के लिए, iframe को टैग में allow एट्रिब्यूट की ज़रूरत होती है.

सिंटैक्स: <iframe src="[ORIGIN]" allow="[FEATURE] <'src' | [ORIGIN(s)]"></iframe>

उदाहरण के लिए:

<iframe src="https://trusted-site.example" allow="geolocation">

iframe नेविगेशन को मैनेज करना

Iframe नेविगेशन सेटअप

डिफ़ॉल्ट रूप से, अगर कोई iframe किसी अन्य ऑरिजिन पर जाता है, तो यह नीति उस ऑरिजिन पर लागू नहीं होती है जिस पर iframe नेविगेट करता है. allow एट्रिब्यूट में, जिस ऑरिजिन पर iframe को नेविगेट किया जाता है उसे सूची में शामिल करने से, ओरिजनल iframe पर लागू की गई अनुमतियों की नीति उस ऑरिजिन पर लागू हो जाएगी जिस पर iframe को नेविगेट किया जा रहा है.

<iframe src="https://trusted-site.example" allow="geolocation https://trusted-site.example https://trusted-navigated-site.example">

iframe नेविगेशन डेमो पर जाकर, इसे इस्तेमाल किया जा सकता है.

अनुमतियों से जुड़ी नीति को सेट अप करने के उदाहरण

यहां दिए गए सेटअप के उदाहरण डेमो में देखे जा सकते हैं.

सभी ऑरिजिन पर सुविधा की अनुमति दी गई

सभी ऑरिजिन के आर्किटेक्चर को इस्तेमाल करने की अनुमति है

Permissions-Policy: geolocation=*
<iframe src="https://trusted-site.example" allow="geolocation">
<iframe src="https://ad.example" allow="geolocation">

अगर ऑरिजिन की सूची * टोकन पर सेट की जाती है, तो इस सुविधा को पेज पर मौजूद सभी ऑरिजिन के लिए इस्तेमाल करने की अनुमति मिलती है. इनमें खुद के और सभी iframe शामिल हैं. इस उदाहरण में, https://your-site.example से दिखाए जाने वाले सभी कोड और https://trusted-site.example iframe और https://ad.example से दिखाए गए कोड के पास उपयोगकर्ता के ब्राउज़र में भौगोलिक जगह की सुविधा का ऐक्सेस है. याद रखें कि अनुमति दें एट्रिब्यूट को, iframe पर भी सेट किया जाना चाहिए. साथ ही, ऑरिजिन को हेडर की ऑरिजिन सूची में भी सेट किया जाना चाहिए.

इस सेट अप को डेमो में देखा जा सकता है.

यह सुविधा सिर्फ़ एक ही ऑरिजिन के लिए इस्तेमाल की जा सकती है

सिर्फ़ एक ही ऑरिजिन के आर्किटेक्चर से, सुविधा को ऐक्सेस किया जा सकता है

Permissions-Policy: geolocation=(self)

self टोकन का इस्तेमाल करने पर, जियोलोकेशन का इस्तेमाल सिर्फ़ उन लोगों के लिए किया जा सकता है जिनका ऑरिजिन इस्तेमाल होता है. क्रॉस-ऑरिजिन के पास इस सुविधा का ऐक्सेस नहीं होगा. इस उदाहरण में, सिर्फ़ https://trusted-site.example (self) के पास जियोलोकेशन का ऐक्सेस होगा. इस सिंटैक्स का इस्तेमाल तब करें, जब आपको सुविधा सिर्फ़ अपने पेज पर चाहिए, किसी और पेज पर नहीं.

इस सेट अप को डेमो में देखा जा सकता है.

समान ऑरिजिन और खास क्रॉस-ऑरिजिन पर सुविधा की अनुमति दी गई

कुछ खास ऑरिजिन के आर्किटेक्चर को इस्तेमाल करने की अनुमति है

Permissions-Policy: geolocation=(self "https://trusted-site.example")

इस सिंटैक्स में खुद के (https://your-site.example) और https://trusted-site.example, दोनों के लिए भौगोलिक स्थान का इस्तेमाल करने की अनुमति है. iframe टैग में, अनुमति वाले एट्रिब्यूट को साफ़ तौर पर जोड़ना न भूलें. अगर <iframe src="https://ad.example" allow="geolocation"> के साथ कोई अन्य iframe है, तो https://ad.example को जियोलोकेशन की सुविधा का ऐक्सेस नहीं मिलेगा. उपयोगकर्ता की सुविधा को सिर्फ़ मूल पेज और https://trusted-site.example के लिए ऐक्सेस मिलेगा, जो ऑरिजिन सूची में मौजूद हैं. साथ ही, iframe टैग में 'अनुमति दें' एट्रिब्यूट की वैल्यू दी गई है.

इस सेट अप को डेमो में देखा जा सकता है.

सुविधा को सभी ऑरिजिन पर ब्लॉक किया गया

सभी ऑरिजिन के आर्किटेक्चर को सुविधा को ऐक्सेस करने से ब्लॉक किया गया

Permissions-Policy: geolocation=()

अगर ऑरिजिन की कोई सूची खाली होती है, तो इस सुविधा को सभी ऑरिजिन के लिए ब्लॉक कर दिया जाता है. इस सेट अप को डेमो में देखा जा सकता है.

JavaScript API का इस्तेमाल करना

सुविधा नीति का मौजूदा JavaScript API या तो दस्तावेज़ या एलिमेंट (document.featurePolicy or element.featurePolicy) में ऑब्जेक्ट के तौर पर मिला है. अनुमतियों के लिए JavaScript API नीति को अब तक लागू नहीं किया गया है.

सुविधाओं के लिए नीति एपीआई का इस्तेमाल, कुछ सीमाओं के साथ, अनुमतियों की नीति की ओर से सेट की गई नीतियों के लिए किया जा सकता है. JavaScript एपीआई को लागू करने से जुड़े बाकी सवाल हैं. साथ ही, लॉजिक को अनुमतियों के एपीआई में ले जाने के लिए, एक सुझाव दिया गया है. अगर आपका कोई विचार है, तो चर्चा में शामिल हों.

featurePolicy.allowsFeature(feature)

  • अगर इस सुविधा के डिफ़ॉल्ट ऑरिजिन इस्तेमाल के लिए अनुमति दी गई है, तो true दिखाता है.
  • अनुमतियों की नीति और सुविधा से जुड़ी पिछली नीति में सेट की गई, दोनों नीतियों का व्यवहार एक जैसा होता है
  • जब किसी iframe एलिमेंट (iframeEl.featurePolicy.allowsFeature('geolocation')) पर allowsFeature() को कॉल किया जाता है, तो दिखाई जाने वाली वैल्यू यह दिखाती है कि iframe पर, 'अनुमति दें' एट्रिब्यूट सेट है या नहीं

featurePolicy.allowsFeature(feature, origin)

  • अगर बताए गए ऑरिजिन के लिए सुविधा की अनुमति दी गई हो, तो true दिखाता है.
  • अगर तरीके को document पर कॉल किया जाता है, तो इस तरीके से आपको यह नहीं पता चलता है कि सुविधा को किसी खास ऑरिजिन के लिए अनुमति दी गई है या नहीं, जैसा कि सुविधा नीति ने किया है. अब इस तरीके से आपको पता चलता है कि इस सुविधा को उस ऑरिजिन के लिए अनुमति दी जा सकती है. आपको यह जांच करनी होगी कि iframe में allow एट्रिब्यूट सेट है या नहीं. डेवलपर को iframe एलिमेंट पर allow एट्रिब्यूट की एक और जांच करनी होगी, ताकि यह पता चल सके कि तीसरे पक्ष के ऑरिजिन के लिए इस सुविधा की अनुमति है या नहीं.

element ऑब्जेक्ट वाले iframe में सुविधाएं देखें

ऐसे element.allowsFeature(feature) का इस्तेमाल किया जा सकता है जो अनुमति वाले एट्रिब्यूट को इस्तेमाल करता है. हालांकि, document.allowsFeature(feature, origin) में ऐसा नहीं होता.

const someIframeEl = document.getElementById('some-iframe')
const isCameraFeatureAllowed = someIframeEl.featurePolicy.allowsFeature('camera')

featurePolicy.allowedFeatures()

  • डिफ़ॉल्ट-ऑरिजिन इस्तेमाल के लिए अनुमति वाली सुविधाओं की सूची दिखाता है.
  • अनुमतियों की नीति और सुविधा से जुड़ी नीति के ज़रिए सेट की गई दोनों नीतियों का व्यवहार एक जैसा होता है
  • जब संबंधित नोड कोई iframe होता है, तो अनुमति वाले एट्रिब्यूट को ध्यान में रखा जाता है.

featurePolicy.features()

  • ब्राउज़र में उपलब्ध सुविधाओं की सूची दिखाता है.
  • अनुमतियों की नीति और सुविधा से जुड़ी नीति के ज़रिए सेट की गई दोनों नीतियों का व्यवहार एक जैसा होता है

Chrome DevTools इंटिग्रेशन

अनुमतियों से जुड़ी नीति के साथ Chrome DevTools का इंटिग्रेशन

देखें कि DevTools में अनुमतियों से जुड़ी नीति कैसे काम करती है.

  1. Chrome DevTools खोलें.
  2. हर फ़्रेम की मंज़ूर की गई सुविधाओं और अस्वीकार की गई सुविधाओं को देखने के लिए ऐप्लिकेशन पैनल खोलें.
  3. साइडबार में जाकर, वह फ़्रेम चुनें जिसकी जांच करनी है. आपको उन सुविधाओं की सूची दिखेगी जिन्हें चुने गए फ़्रेम को इस्तेमाल करने की अनुमति होगी. साथ ही, उन सुविधाओं की सूची भी दिखेगी जिन्हें उस फ़्रेम में ब्लॉक किया गया है.

सुविधा-नीति से माइग्रेशन

अगर Feature-Policy हेडर का इस्तेमाल किया जा रहा है, तो अनुमतियों से जुड़ी नीति पर माइग्रेट करने के लिए, यह तरीका अपनाएं.

सुविधा नीति के हेडर को अनुमतियों की नीति के हेडर से बदलें

सुविधा से जुड़ी नीति के हेडर, सिर्फ़ Chromium का इस्तेमाल करने वाले ब्राउज़र में काम करते हैं. साथ ही, 'अनुमति नीति' के हेडर Chrome 88 के बाद से काम करते हैं. इसलिए, मौजूदा हेडर को अनुमतियों की नीति से अपडेट करना सुरक्षित है.

ओल्ड
Feature-Policy:
  autoplay *;
  geolocation 'self';
  camera 'self' 'https://trusted-site.example';
  fullscreen 'none';

सुविधा नीति से पहले.

नए दर्शक
Permissions-Policy:
  autoplay=*,
  geolocation=(self),
  camera=(self "https://trusted-site.example"),
  fullscreen=()

अब अनुमतियों की नीति के साथ.

document.allowsFeature(feature, origin) के इस्तेमाल से जुड़ी जानकारी अपडेट करें

अगर iframe के लिए मंज़ूर की गई सुविधाएं देखने के लिए document.allowsFeature(feature, origin) तरीके का इस्तेमाल किया जा रहा है, तो iframe एलिमेंट में अटैच किए गए allowsFeature(feature) तरीके का इस्तेमाल करें, न कि document वाला तरीका. element.allowsFeature(feature) तरीका अनुमति दें एट्रिब्यूट के लिए है, जबकि document.allowsFeature(feature, origin) में ऐसा नहीं है.

document से सुविधा के ऐक्सेस की जांच की जा रही है

document को बेस नोड के तौर पर इस्तेमाल करना जारी रखने के लिए, आपको iframe टैग पर allow एट्रिब्यूट की एक और जांच करनी होगी.

<iframe id="some-iframe" src="https://example.com" allow="camera"></iframe>
Permissions-Policy: camera=(self "https://example.com")
const isCameraPolicySet = document.featurePolicy.allowsFeature('camera', 'https://example.com')

const someIframeEl = document.getElementById('some-iframe')
const hasCameraAttributeValue = someIframeEl.hasAttribute('allow')
&& someIframeEl.getAttribute('allow').includes('camera')

const isCameraFeatureAllowed = isCameraPolicySet && hasCameraAttributeValue

हमारा सुझाव है कि document का इस्तेमाल करके मौजूदा कोड को अपडेट करने के बजाय, पिछले उदाहरण की तरह ही element ऑब्जेक्ट पर allowsFeature() को कॉल करें.

रिपोर्टिंग एपीआई

Reporting API, वेब ऐप्लिकेशन के लिए एक जैसा तरीके से शिकायत करने का एक तरीका उपलब्ध कराता है. साथ ही, अनुमतियों से जुड़ी नीति के उल्लंघनों के लिए Reporting API, एक्सपेरिमेंट के तौर पर उपलब्ध सुविधा के तौर पर उपलब्ध है.

अगर आपको इस प्रयोग के लिए दी गई सुविधा की जांच करनी है, तो सिलसिलेवार तरीके से निर्देश दें का पालन करें और chrome://flags/#enable-experimental-web-platform-features में फ़्लैग करें. फ़्लैग चालू करके, आप ऐप्लिकेशन टैब में DevTools में अनुमतियों से जुड़ी नीति के उल्लंघन देख सकते हैं:

नीचे दिया गया उदाहरण दिखाता है कि Reporting API हेडर कैसे बनाया जा सकता है:

Reporting-Endpoints: main-endpoint="https://reports.example/main", default="https://reports.example/default"

Content-Security-Policy: script-src 'self'; object-src 'none'; report-to main-endpoint;
Document-Policy: document-write=?0; report-to=main-endpoint;

मौजूदा तरीके से लागू करने में, ऊपर दिए गए उदाहरण की तरह 'डिफ़ॉल्ट' नाम के एंडपॉइंट को कॉन्फ़िगर करके, उस फ़्रेम में होने वाले किसी भी उल्लंघन से, नीति के उल्लंघन की रिपोर्ट पाई जा सकती हैं. सबफ़्रेम को अपने खुद के रिपोर्टिंग कॉन्फ़िगरेशन की ज़रूरत होगी.

ज़्यादा जानें

अनुमतियों से जुड़ी नीति के बारे में ज़्यादा जानने के लिए, यहां दिए गए संसाधन देखें: