क्रॉस-ऑरिजिन आइसोलेशन की मदद से, वेब पेज पर बेहतर सुविधाओं का इस्तेमाल किया जा सकता है. जैसे, SharedArrayBuffer. इस लेख में, अपनी वेबसाइट पर क्रॉस-ऑरिजिन आइसोलेशन चालू करने का तरीका बताया गया है.
इस गाइड में, क्रॉस-ऑरिजिन आइसोलेशन की सुविधा चालू करने का तरीका बताया गया है. अगर आपको SharedArrayBuffer
,
performance.measureUserAgentSpecificMemory()
या ज़्यादा सटीक समय दिखाने वाले हाई रिज़ॉल्यूशन वाले टाइमर का इस्तेमाल करना है, तो क्रॉस-ऑरिजिन आइसोलेशन की ज़रूरत होती है.
अगर आपको क्रॉस-ऑरिजिन आइसोलेशन की सुविधा चालू करनी है, तो इस बात का आकलन करें कि इसका असर आपकी वेबसाइट पर मौजूद अन्य क्रॉस-ऑरिजिन संसाधनों पर क्या होगा. जैसे, विज्ञापन प्लेसमेंट.
SharedArrayBuffer
का इस्तेमाल कहां किया जाता हैSharedArrayBuffer
का इस्तेमाल करने वाली सुविधाएं, क्रॉस-ऑरिजिन आइसोलेशन के बिना काम नहीं करेंगी. अगर SharedArrayBuffer
के बंद होने के मैसेज की वजह से, आप इस पेज पर आए हैं, तो हो सकता है कि आपकी वेबसाइट या उसमें एम्बेड किए गए किसी रिसॉर्स में SharedArrayBuffer
का इस्तेमाल किया जा रहा हो. यह पक्का करने के लिए कि बंद होने की वजह से आपकी वेबसाइट पर कोई समस्या न आए, सबसे पहले यह पता लगाएं कि इसका इस्तेमाल कहां किया गया है.अगर आपको नहीं पता कि आपकी साइट पर SharedArrayBuffer
का इस्तेमाल कहां किया गया है, तो इसे पता करने के दो तरीके हैं:
- Chrome DevTools का इस्तेमाल करना
- (बेहतर तरीका) किसी एपीआई या सुविधा के बंद होने की रिपोर्ट का इस्तेमाल करना
अगर आपको पहले से पता है कि SharedArrayBuffer
का इस्तेमाल कहां किया जा रहा है, तो क्रॉस-ऑरिजिन आइसोलेशन के असर का विश्लेषण करें पर जाएं.
Chrome DevTools का इस्तेमाल करना
Chrome DevTools की मदद से, डेवलपर वेबसाइटों की जांच कर सकते हैं.
- जिस पेज पर आपको लगता है कि
SharedArrayBuffer
का इस्तेमाल किया जा रहा है उस पर Chrome DevTools खोलें. - कंसोल पैनल चुनें.
- अगर पेज पर
SharedArrayBuffer
का इस्तेमाल किया जा रहा है, तो आपको यह मैसेज दिखेगा:[Deprecation] SharedArrayBuffer will require cross-origin isolation as of M92, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. common-bundle.js:535
- मैसेज के आखिर में मौजूद फ़ाइल का नाम और लाइन नंबर (उदाहरण के लिए,
common-bundle.js:535
) से पता चलता है किSharedArrayBuffer
कहां से आ रहा है. अगर यह तीसरे पक्ष की लाइब्रेरी है, तो समस्या ठीक करने के लिए डेवलपर से संपर्क करें. अगर इसे आपकी वेबसाइट के हिस्से के तौर पर लागू किया गया है, तो क्रॉस-ऑरिजिन आइसोलेशन की सुविधा चालू करने के लिए, यहां दी गई गाइड का पालन करें.
(बेहतर तरीका) किसी एपीआई या सुविधा के बंद होने की रिपोर्ट का इस्तेमाल करना
कुछ ब्राउज़र में, बताए गए एंडपॉइंट पर एपीआई को रोकने के लिए, रिपोर्टिंग की सुविधा उपलब्ध होती है.
- बंद होने की रिपोर्ट सर्वर सेट अप करें और रिपोर्टिंग का यूआरएल पाएं. ऐसा करने के लिए, किसी सार्वजनिक सेवा का इस्तेमाल करें या खुद कोई सेवा बनाएं.
- यूआरएल का इस्तेमाल करके, नीचे दिए गए एचटीटीपी हेडर को उन पेजों पर सेट करें जिन पर
SharedArrayBuffer
दिखाया जा सकता है.Report-To: {"group":"default","max_age":86400,"endpoints":[{"url":"THE_DEPRECATION_ENDPOINT_URL"}]}
- हेडर के प्रॉपेगेट होने के बाद, आपने जिस एंडपॉइंट के लिए रजिस्टर किया है वह एंडपॉइंट, बंद होने की रिपोर्ट इकट्ठा करना शुरू कर देगा.
इसे लागू करने का उदाहरण यहां देखें: https://cross-origin-isolation.glitch.me.
क्रॉस-ऑरिजिन आइसोलेशन के असर का विश्लेषण करना
क्या यह अच्छा नहीं होगा कि आप क्रॉस-ऑरिजिन आइसोलेशन को चालू करने से, अपनी साइट पर होने वाले असर का आकलन कर पाएं? Cross-Origin-Opener-Policy-Report-Only
और Cross-Origin-Embedder-Policy-Report-Only
एचटीटीपी हेडर की मदद से, यह काम किया जा सकता है.
- अपने टॉप-लेवल दस्तावेज़ पर
Cross-Origin-Opener-Policy-Report-Only: same-origin
सेट करें. जैसा कि नाम से पता चलता है, यह हेडर सिर्फ़ उन रिपोर्ट को भेजता है जोCOOP: same-origin
से आपकी साइट पर हो सकते हैं. इससे पॉप-अप विंडो से कम्यूनिकेशन की सुविधा बंद नहीं होगी. - रिपोर्टिंग की सुविधा सेट अप करें और रिपोर्ट पाने और सेव करने के लिए वेब सर्वर को कॉन्फ़िगर करें.
- अपने टॉप-लेवल दस्तावेज़ पर
Cross-Origin-Embedder-Policy-Report-Only: require-corp
सेट करें. इस हेडर की मदद से,COEP: require-corp
को चालू करने से होने वाले असर को देखा जा सकता है. इससे, आपकी साइट के काम करने पर कोई असर नहीं पड़ता. इस हेडर को कॉन्फ़िगर करके, उसी रिपोर्टिंग सर्वर पर रिपोर्ट भेजी जा सकती हैं जिसे आपने पिछले चरण में सेट अप किया था.
क्रॉस-ऑरिजिन आइसोलेशन के असर को कम करना
यह तय करने के बाद कि क्रॉस-ऑरिजिन आइसोलेशन से किन संसाधनों पर असर पड़ेगा, यहां उन क्रॉस-ऑरिजिन संसाधनों को ऑप्ट-इन करने के सामान्य दिशा-निर्देश दिए गए हैं:
- क्रॉस-ऑरिजिन रिसॉर्स, जैसे कि इमेज, स्क्रिप्ट, स्टाइलशीट, iframes, और अन्य पर,
Cross-Origin-Resource-Policy: cross-origin
हेडर सेट करें. एक ही साइट के रिसॉर्स पर,Cross-Origin-Resource-Policy: same-site
हेडर सेट करें. - CORS का इस्तेमाल करके लोड किए जा सकने वाले संसाधनों के लिए, पक्का करें कि यह चालू हो. इसके लिए, एचटीएमएल टैग (उदाहरण के लिए,
<img src="example.jpg" crossorigin>
) मेंcrossorigin
एट्रिब्यूट सेट करें. JavaScript फ़ेच अनुरोध के लिए, पक्का करें किrequest.mode
कोcors
पर सेट किया गया हो. - अगर आपको लोड किए गए iframe में
SharedArrayBuffer
जैसी बेहतरीन सुविधाओं का इस्तेमाल करना है, तो<iframe>
मेंallow="cross-origin-isolated"
जोड़ें. - अगर iframe या वर्कर स्क्रिप्ट में लोड किए गए क्रॉस-ऑरिजिन संसाधनों में, iframe या वर्कर स्क्रिप्ट की कोई दूसरी लेयर शामिल है, तो आगे बढ़ने से पहले, इस सेक्शन में बताए गए चरणों को बार-बार लागू करें.
- सभी क्रॉस-ऑरिजिन संसाधनों के ऑप्ट-इन होने की पुष्टि करने के बाद, iframe और वर्कर स्क्रिप्ट पर
Cross-Origin-Embedder-Policy: require-corp
हेडर सेट करें. यह ज़रूरी है, भले ही वे एक ही ऑरिजिन या क्रॉस-ऑरिजिन हों. - पक्का करें कि कोई भी क्रॉस-ऑरिजिन पॉप-अप विंडो न हो जिसके लिए
postMessage()
के ज़रिए कम्यूनिकेशन की ज़रूरत हो. क्रॉस-ऑरिजिन आइसोलेशन की सुविधा चालू होने पर, उन्हें काम करने से रोकने का कोई तरीका नहीं है. आपके पास, कम्यूनिकेशन को किसी ऐसे दस्तावेज़ में ले जाने का विकल्प है जो क्रॉस-ऑरिजिन से अलग नहीं है. इसके अलावा, कम्यूनिकेशन के लिए किसी दूसरे तरीके का इस्तेमाल भी किया जा सकता है. जैसे, एचटीटीपी अनुरोध.
क्रॉस-ऑरिजिन आइसोलेशन चालू करें
क्रॉस-ऑरिजिन आइसोलेशन की मदद से असर को कम करने के बाद, क्रॉस-ऑरिजिन आइसोलेशन को चालू करने के लिए यहां सामान्य दिशा-निर्देश दिए गए हैं:
- अपने टॉप-लेवल दस्तावेज़ पर
Cross-Origin-Opener-Policy: same-origin
हेडर सेट करें. अगर आपनेCross-Origin-Opener-Policy-Report-Only: same-origin
सेट किया था, तो उसे बदलें. इससे आपके टॉप-लेवल दस्तावेज़ और उसकी पॉप-अप विंडो के बीच का कम्यूनिकेशन ब्लॉक हो जाता है. - अपने टॉप-लेवल दस्तावेज़ पर
Cross-Origin-Embedder-Policy: require-corp
हेडर सेट करें. अगर आपनेCross-Origin-Embedder-Policy-Report-Only: require-corp
सेट किया था, तो उसे बदलें. ऐसा करने से, उन क्रॉस-ऑरिजिन रिसॉर्स को लोड होने से रोक दिया जाएगा जिन्हें ऑप्ट-इन नहीं किया गया है. - यह पुष्टि करने के लिए कि आपका पेज क्रॉस-ऑरिजिन आइसोलेटेड है, यह पक्का करें कि
self.crossOriginIsolated
, कंसोल मेंtrue
दिखाता है या नहीं.