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

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

Kevin K. Lee
Kevin K. Lee

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

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

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

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

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

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

स्ट्रक्चर्ड फ़ील्ड, एचटीटीपी हेडर फ़ील्ड की वैल्यू को पार्स करने और उन्हें क्रम में लगाने के लिए स्टैंडर्ड तय करने के लिए, सामान्य डेटा स्ट्रक्चर का सेट उपलब्ध कराते हैं. 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, ऑरिजिन लिस्ट में नहीं जोड़ा गया है. साथ ही, जिसके iframe टैग में अनुमति एट्रिब्यूट सेट है. अलग-अलग सबडोमेन को एक ही साइट, लेकिन क्रॉस-ऑरिजिन माना जाता है.
  4. क्रॉस-ऑरिजिन iframe (trusted-site.example) जिसे ऑरिजिन लिस्ट में जोड़ा गया है और जिसके iframe टैग पर allow एट्रिब्यूट सेट है. इसके पास इस सुविधा का इस्तेमाल करने की अनुमति है.
  5. ऑरिजिन लिस्ट में जोड़े गए क्रॉस-ऑरिजिन iframe (trusted-site.example) को इस सुविधा का इस्तेमाल करने से ब्लॉक कर दिया गया है. हालांकि, इसमें allow एट्रिब्यूट शामिल नहीं है.
  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 को एक ही ऑरिजिन माना जाता है और अलग-अलग पाथ को ऑरिजिन सूची में शामिल करना ज़रूरी नहीं होता.

आईफ़्रेम 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 API को लागू करने से जुड़े ज़रूरी सवाल हैं. साथ ही, इस लॉजिक को Permissions API में शामिल करने के लिए, एक प्रपोज़ल बनाया गया है. अगर आपके पास कोई विचार है, तो चर्चा में शामिल हों.

featurePolicy.allowsFeature(feature)

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

सुविधा नीति.allowsFeature(सुविधा, ऑरिजिन)

  • अगर किसी ऑरिजिन के लिए सुविधा की अनुमति दी गई है, तो यह फ़ंक्शन 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) के इस्तेमाल को अपडेट करें

अगर iframes की सुविधाओं की जांच करने के लिए, 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;

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

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

अनुमतियों की नीति को बेहतर तरीके से समझने के लिए, इन संसाधनों को देखें: