Android Chrome 88 और डेस्कटॉप Chrome 92 में SharedarrayBuffer के अपडेट

यह कहना सही है कि SharedArrayBuffer का लक्ष्य थोड़ा मुश्किल था लेकिन चीज़ें ठीक से काम कर रही हैं. यहां आपके जानने योग्य तथ्य दिए गए हैं:

कम शब्दों में

  • SharedArrayBuffer अभी Firefox 79 और उसके बाद के वर्शन में काम करता है और यह Android पर उपलब्ध होगा Chrome 88. हालांकि, यह सिर्फ़ उन पेजों के लिए उपलब्ध है जो क्रॉस-ऑरिजिन आइसोलेटेड हैं.
  • फ़िलहाल, SharedArrayBuffer डेस्कटॉप Chrome पर उपलब्ध है, लेकिन Chrome में उपलब्ध है 92 यह क्रॉस-ऑरिजिन आइसोलेटेड पेजों तक सीमित रहेगा. अगर आपको लगता है कि समय पर यह बदलाव कर सकते हैं, तो कम से कम Chrome जब तक मौजूदा व्यवहार को बनाए रखने के लिए ऑरिजिन ट्रायल के लिए रजिस्टर करें 113.
  • अगर आपको क्रॉस-ऑरिजिन आइसोलेशन चालू करना है, तो SharedArrayBuffer अन्य क्रॉस-ऑरिजिन पर होने वाले असर का आकलन करता है आपकी वेबसाइट पर मौजूद चीज़ें, जैसे कि विज्ञापन प्लेसमेंट. देखें कि क्या SharedArrayBuffer आपके किसी भी तीसरे पक्ष के संसाधन का इस्तेमाल करके, कॉन्टेंट पर पड़ने वाले असर को समझने में मदद मिलती है. दिशा-निर्देश.

क्रॉस-ऑरिजिन आइसोलेशन के बारे में खास जानकारी

किसी पेज को क्रॉस-ऑरिजिन आइसोलेटेड के तौर पर दिखाया जा सकता है. हेडर:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

ऐसा करने के बाद, आपका पेज तब तक क्रॉस-ऑरिजिन कॉन्टेंट लोड नहीं कर पाएगा, जब तक कि संसाधन Cross-Origin-Resource-Policy के ज़रिए साफ़ तौर पर इसकी अनुमति देता है हेडर या CORS हेडर (Access-Control-Allow-* वगैरह).

यहां Reporting API भी मौजूद होता है, ताकि आप उन अनुरोधों का डेटा इकट्ठा कर सकता है जो पूरे न हो पाएं Cross-Origin-Embedder-Policy और Cross-Origin-Opener-Policy.

अगर आपको नहीं लगता है कि Chrome 92 के लिए, ये बदलाव समय पर किए जा सकते हैं, तो मौजूदा डेस्कटॉप Chrome को बनाए रखने के लिए, ऑरिजिन ट्रायल के लिए रजिस्टर करें कम से कम Chrome 113 और उसके बाद के वर्शन पर काम करता है.

इस पेज के सबसे नीचे मौजूद आगे पढ़ें सेक्शन देखें पर जाकर, क्रॉस-ऑरिजिन आइसोलेशन के बारे में ज़्यादा दिशा-निर्देश और जानकारी पाएं.

हम यहां कैसे पहुंचे?

SharedArrayBuffer को Chrome 60 वर्शन अपने-आप मिल गया है (यह जुलाई 2017 है. उन लोगों को यह ऑफ़र दिया जा रहा है जो समय की बात करने की कोशिश करते हैं, तो सबकुछ बहुत बढ़िया था. छह महीनों के लिए.

जनवरी 2018 में, कुछ लोकप्रिय सीपीयू में जोखिम की आशंका का पता चला था. ज़्यादा जानकारी के लिए, एलान लेकिन इसका मतलब यह था कि कोड हाई रिज़ॉल्यूशन का इस्तेमाल कर सकता है टाइमर को पढ़ सकता है, जिसका ऐक्सेस उसके पास नहीं होना चाहिए.

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

इसे कम करने के लिए, हमने अपने हाई-रिज़ॉल्यूशन टाइमर के रिज़ॉल्यूशन को कम कर दिया performance.now() के तौर पर. हालांकि, इनका इस्तेमाल करके हाई-रिज़ॉल्यूशन टाइमर बना जा सकता है किसी वर्कर में टाइट लूप में मेमोरी को बदलकर, और पढ़ने से SharedArrayBuffer इसे दूसरे थ्रेड में जोड़ें. इसे कम किए बिना असरदार तरीके से कम नहीं किया जा सकता अच्छे इंटेंट वाले कोड पर बहुत ज़्यादा असर डालने की वजह से, SharedArrayBuffer को बंद किया गया कुल मिलाकर.

सामान्य समस्या को हल करने का मकसद यह पक्का करना है कि किसी वेबपेज की सिस्टम प्रोसेस में से शेयर किया गया डेटा मिल सकता है. Chrome ने कई प्रोसेस में निवेश किया था (कॉमिक याद है?) पर शुरुआत से ही काम किया है, लेकिन कुछ ऐसे मामले जहां कई साइटों का डेटा एक ही प्रोसेस में खत्म हो सकता है:

<iframe src="https://your-bank.example/balance.json"></iframe>
<script src="https://your-bank.example/balance.json"></script>
<link rel="stylesheet" href="https://your-bank.example/balance.json" />
<img src="https://your-bank.example/balance.json" />
<video src="https://your-bank.example/balance.json"></video>
<!-- …and more… -->

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

हमने इन लेगसी एपीआई पर काम किया, ताकि कॉन्टेंट को की दिखाई गई और उसे क्रॉस-ऑरिजिन रीड ब्लॉकिंग कहा गया. इसलिए, ऊपर दिए गए मामलों में, हम JSON को प्रोसेस में जाने की अनुमति नहीं देते, क्योंकि ऐसा नहीं होता इनमें से किसी भी एपीआई के लिए मान्य फ़ॉर्मैट का इस्तेमाल करें. यानी, iframes को छोड़कर. iframe के लिए, हम कॉन्टेंट को दूसरी प्रोसेस में रखने की कोशिश करें.

इन पाबंदियों के साथ, हमने Chrome में SharedArrayBuffer को फिर से पेश किया है 68 (जुलाई 2018) में डाउनलोड करने के लिए उपलब्ध है. अतिरिक्त प्रक्रिया की शर्तों का मतलब था कि हम मोबाइल डिवाइसों पर ऐसा नहीं किया जा सकता. यह भी नोट किया गया कि Chrome के समाधान अधूरा था, क्योंकि हम सिर्फ़ 'गलत' को ब्लॉक कर रहे थे डेटा फ़ॉर्मैट पर निर्भर करता है, जबकि (हालांकि असामान्य) ऐसी संभावित (असामान्य) ऐसी स्थिति में मान्य CSS/JS/इमेज, जहां से अनुमान लगाई जा सकती हैं निजी डेटा शामिल न करें.

लोगों के लिए एक साथ मिलकर एक पूरा क्रॉस-ब्राउज़र (अलग-अलग ब्राउज़र का इस्तेमाल) तैयार करना समाधान. इसका समाधान यह था कि मैं ऐसे पेजों पर अन्य ऑरिजिन के कॉन्टेंट को लोगों के ऑप्ट-इन किए बिना इस प्रोसेस में शामिल करने की सुविधा देता है". यह एलान, COOP और COEP हेडर के ज़रिए किया जाता है पेज के साथ दिखाया जाता है. ब्राउज़र उसे लागू करता है और इसके बदले में पेज को SharedArrayBuffer और मिलती-जुलती पावर वाले अन्य एपीआई का ऐक्सेस. अन्य ऑरिजिन के ज़रिए सामग्री एम्बेड करने के लिए ऑप्ट-इन कर सकते हैं Cross-Origin-Resource-Policy या CORS के बारे में जानें.

Firefox इस प्रतिबंध के साथ सबसे पहले SharedArrayBuffer को भेजने वाला था, इसमें वर्शन 79 (जुलाई 2020) है.

इसके बाद, जनवरी 2021 में मैंने यह लेख लिखा और आपने उसे पढ़ लिया. नमस्ते.

अभी हम यहां हैं. Chrome 88, SharedArrayBuffer को वापस ला रहा है उन पेजों के लिए Android जो क्रॉस-ऑरिजिन आइसोलेटेड हैं और Chrome 92 एक जैसा अनुभव देने और कुल क्रॉस-ऑरिजिन पाने, दोनों के लिए डेस्कटॉप की ज़रूरी शर्तें आइसोलेशन.

Chrome में डेस्कटॉप के बदलाव में देरी करना

यह 'ऑरिजिन ट्रायल' के तौर पर कुछ समय के लिए अपवाद है जो लोगों को क्रॉस-ऑरिजिन आइसोलेटेड पेजों को लागू करने में ज़्यादा समय लगता है. यह सुविधा चालू करती है SharedArrayBuffer. इसके लिए, पेज को क्रॉस-ऑरिजिन आइसोलेटेड होना ज़रूरी नहीं है. कॉन्टेंट बनाने इस अपवाद की समयसीमा Chrome 113 में खत्म हो जाएगी. यह अपवाद सिर्फ़ डेस्कटॉप पर लागू होता है Chrome.

  1. अपनी साइट के ऑरिजिन के लिए टोकन का अनुरोध करें.
  2. अपने पेजों पर टोकन जोड़ें. ऐसा करने के दो तरीके हैं:
    • हर पेज के हेडर पर origin-trial <meta> टैग जोड़ें. उदाहरण के लिए, यह कुछ ऐसा दिखेगा:
      <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • अगर आप अपना सर्वर कॉन्फ़िगर कर सकते हैं, तो आप टोकन भी जोड़ सकते हैं Origin-Trial एचटीटीपी हेडर का इस्तेमाल करके. इससे मिलने वाला रिस्पॉन्स हेडर यह होना चाहिए कुछ ऐसा दिखेगा:
      Origin-Trial: TOKEN_GOES_HERE

इसके बारे में और पढ़ें

डैनियल की बैनर फ़ोटो अनस्प्लैश पर Gregoire