Chrome 57 में API को बंद करना और हटाना

Joe Medley
Joe Medley

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

BluetoothDevice.uuids एट्रिब्यूट हटाएं

वेब ब्लूटूथ एपीआई को मौजूदा स्पेसिफ़िकेशन के मुताबिक बनाने के लिए, BluetoothDevice.uuids एट्रिब्यूट को हटाया जा रहा है. device.getPrimaryServices() को कॉल करके, अनुमति वाली सभी GATT सेवाएं वापस पाई जा सकती हैं.

Chromium में गड़बड़ी

पासकोड जनरेट करने वाला एलिमेंट हटाना

Chrome 49 से, <keygen> का डिफ़ॉल्ट व्यवहार खाली स्ट्रिंग दिखाना है. ऐसा तब तक होता है, जब तक इस पेज को अनुमति नहीं दी जाती. IE/Edge पर <keygen> काम नहीं करता. साथ ही, <keygen> के साथ काम करने के लिए, सार्वजनिक सिग्नल नहीं दिए गए हैं. Firefox में पहले से ही, <keygen> को उपयोगकर्ता के जेस्चर के पीछे रखा गया है. हालांकि, Firefox सार्वजनिक तौर पर इसे हटाने का समर्थन करता है. Safari में <keygen> वर्शन उपलब्ध है. हालांकि, इस वर्शन के लिए, अब भी सहायता उपलब्ध कराने के बारे में सार्वजनिक तौर पर कोई जानकारी नहीं दी गई है. Chrome 57 में, यह एलिमेंट हटा दिया गया है.

हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग

प्रीफ़िक्स वाला रिसॉर्स टाइमिंग बफ़र-मैनेजमेंट एपीआई हटाएं

दो तरीके और एक इवेंट हैंडलर, webkitClearResourceTimings(), webkitSetResourceTimingBufferSize(), और onwebkitresourcetimingbufferfull अब काम नहीं करते और वेंडर के हिसाब से होते हैं. इन एपीआई के स्टैंडर्ड वर्शन, Chrome के 46 वर्शन से काम कर रहे हैं. साथ ही, उस वर्शन में प्रीफ़िक्स वाले फ़ंक्शन भी बंद कर दिए गए थे. ये सुविधाएं मूल रूप से WebKit में लागू की गई थीं, लेकिन Safari ने इन्हें चालू नहीं किया है. Firefox, IE 10 और इसके बाद के वर्शन, और Edge में एपीआई का सिर्फ़ बिना प्रीफ़िक्स वाला वर्शन होता है. इसलिए, वेबवॉकेट के वर्शन हटाए जा रहे हैं.

हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग

MessageEvent का इस्तेमाल करने के लिए, ServiceWorkerMessageEvent को हटाना

एचटीएमएल स्पेसिफ़िकेशन में MessageEvent को बढ़ाया गया है, ताकि ServiceWorker को source एट्रिब्यूट के टाइप के तौर पर इस्तेमाल किया जा सके. client.postMessage() और कस्टम मैसेज इवेंट बनाने की सुविधा को बदला गया है, ताकि ServiceWorkerMessageEvent के बजाय MessageEvent का इस्तेमाल किया जा सके. ServiceWorkerMessageEvent को हटा दिया गया है.

हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग

webkit-प्रीफ़िक्स वाले IndexedDB के ग्लोबल उपनाम हटाना

Chrome 11 के आस-पास, IndexedDB एंट्री पॉइंट और ग्लोबल कन्स्ट्रक्टर को webkit के साथ दिखाया गया था. बिना प्रीफ़िक्स वाले वर्शन, Chrome 24 में जोड़े गए थे. साथ ही, प्रीफ़िक्स वाले वर्शन, Chrome 38 में बंद कर दिए गए थे. इन इंटरफ़ेस पर असर पड़ा है:

  • webkitIndexedDB (मुख्य एंट्री पॉइंट)
  • webkitIDBKeyRange (ऐसा ग्लोबल कंस्ट्रक्टर जिसे कॉल नहीं किया जा सकता, लेकिन इसमें काम के स्टैटिक तरीके हैं)
  • webkitIDBCursor
  • webkitIDBDatabase
  • webkitIDBFactory
  • webkitIDBIndex
  • webkitIDBObjectStore
  • webkitIDBRequest
  • webkitIDBTransaction (ऐसे ग्लोबल कंस्ट्रक्टर जिन्हें कॉल नहीं किया जा सकता)

हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग

WebAudio: प्रीफ़िक्स वाले AudioContext और OfflineAudioContext को हटाना

Chrome, AudioContext के साथ-साथ WebAudio के साथ भी साल 2011 के मध्य से काम करता है. OfflineAudioContext को अगले साल जोड़ा गया. स्टैंडर्ड इंटरफ़ेस का इस्तेमाल कब से किया जा रहा है और Google का लंबे समय से यह लक्ष्य रहा है कि वह प्रीफ़िक्स वाली सुविधाओं को हटा दे, इसलिए इन इंटरफ़ेस के प्रीफ़िक्स वाले वर्शन का इस्तेमाल, 2014 के आखिर से बंद कर दिया गया है. अब इन्हें हटा दिया जा रहा है.

हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग

webkitCancelRequestAnimationFrame को बंद करना और हटाना

webkitCancelRequestAnimationFrame() तरीका, एपीआई का एक पुराना और वेंडर-स्पेसिफ़िक तरीका है. वहीं, स्टैंडर्ड cancelAnimationFrame() तरीका, क्रोमियम में लंबे समय से काम कर रहा है. इसलिए, webkit वर्शन को हटाया जा रहा है.

हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग

usemap एट्रिब्यूट के लिए, केस-इनसेंसिटिव मैचिंग की सुविधा बंद करना

usemap एट्रिब्यूट को पहले केसलेस के तौर पर तय किया गया था. माफ़ करें, इसे लागू करना इतना मुश्किल था कि कोई भी ब्राउज़र इसे सही तरीके से लागू नहीं कर सका. रिसर्च से पता चला है कि इस तरह के जटिल एल्गोरिदम की ज़रूरत नहीं है. यहां तक कि ASCII के केस-इनसेंसिटिव मैचिंग की भी ज़रूरत नहीं है.

इसलिए, स्पेसिफ़िकेशन को अपडेट किया गया, ताकि केस-सेंसिटिव मैचिंग लागू की जा सके. Chrome 57 में, पुराने वर्शन के व्यवहार का इस्तेमाल नहीं किया जा सकता. इसे Chrome 58 से हटा दिया जाएगा.

हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग

सर्विस वर्कर में FileReaderSync को बंद करना

सेवा वर्कर के स्पेसिफ़िकेशन में हमेशा यह नोट (नॉन-नॉर्मटिव) रहा है कि "सेवा वर्कर को ब्लॉक करने से बचने के लिए, किसी भी तरह के सिंक्रोनस अनुरोध को सेवा वर्कर में शुरू नहीं किया जाना चाहिए". सर्विस वर्कर को ब्लॉक करने पर, कंट्रोल किए गए पेजों से सभी नेटवर्क अनुरोध ब्लॉक हो जाएंगे. माफ़ करें, FileReaderSync एपीआई, सर्विस वर्कर्स में पहले से ही उपलब्ध है.

फ़िलहाल, सिर्फ़ Firefox और Chrome में सेवा वर्कर में FileReaderSync को एक्सपोज़ किया जाता है. स्पेसिफ़िकेशन की चर्चा में, Firefox ने इस बात पर सहमति दी है कि इसे ठीक किया जाना चाहिए. उम्मीद है कि इसे Chrome 59 में हटा दिया जाएगा.

हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग

HTMLEmbedElement और HTMLObjectElement के लिए, लेगसी कॉलर को बंद करना

अगर किसी इंटरफ़ेस में लेगसी कॉलर है, तो इसका मतलब है कि किसी इंस्टेंस को फ़ंक्शन के तौर पर कॉल किया जा सकता है. फ़िलहाल, HTMLEmbedElement और HTMLObjectElement में यह सुविधा काम करती है. Chrome 57 में, इस सुविधा का इस्तेमाल नहीं किया जा सकता. Chrome 58 में, इस सुविधा को हटाने के बाद, कॉल करने पर अपवाद दिखेगा.

इस बदलाव से, Chrome को हाल ही में किए गए स्पेसिफ़िकेशन में हुए बदलावों के मुताबिक बनाया गया है. Edge या Safari में, लेगसी व्यवहार काम नहीं करता. साथ ही, इसे Firefox से हटाया जा रहा है.

हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग

"negotiate" की RTCRtcpMuxPolicy को बंद करना

Chrome, rtcpMuxPolicy का इस्तेमाल करके RTP/RTCP मल्टीप्लेक्सिंग के इस्तेमाल से जुड़ी अपनी पसंदीदा नीति के बारे में बताता है. हमने Chrome 57 में, डिफ़ॉल्ट rtcpMuxPolicy को "ज़रूरी है" में बदल दिया है. साथ ही, "बातचीत करें" के इस्तेमाल पर रोक लगा दी है. ऐसा इन वजहों से किया गया है:

  • बिना म्यूक्स किए गए आरटीसीपी, अतिरिक्त नेटवर्क संसाधनों का इस्तेमाल करता है.
  • "negotiate" को हटाने से, एपीआई का इस्तेमाल करना आसान हो जाएगा. ऐसा इसलिए, क्योंकि इसके बाद "RtpSender"/"RtpReceiver" में सिर्फ़ एक ट्रांसपोर्ट होगा.

Chrome 57 में, "negotiate" का इस्तेमाल नहीं किया जा सकता. हमारा मानना है कि यह कोई ऐसा बदलाव नहीं है जिससे कोई समस्या आए. ऐसा इसलिए, क्योंकि उपयोगकर्ता को इस सुविधा के बंद होने का मैसेज मिलेगा और RTCPeerConnection अब भी बनाया जा सकता है. यह सुविधा Chrome 63 में हटा दी गई है.

इस्तेमाल बंद करने का फ़ैसला | Chromium में मौजूद गड़बड़ी

सब-रिसॉर्स के अनुरोधों में एम्बेड किए गए क्रेडेंशियल के लिए सहायता बंद करना

सब-रिसॉर्स के अनुरोधों में क्रेडेंशियल को हार्ड-कोड करना, सुरक्षा के लिहाज़ से समस्या पैदा करता है. इसकी वजह यह है कि इससे हैकर, क्रेडेंशियल को ब्रूट-फ़ोर्स कर सकते हैं. क्रेडेंशियल वाले सब-रिसॉर्स के अनुरोधों के लिए ये जोखिम ज़्यादा होते हैं, जो इंटरनल आईपी रेंज (आपके राउटर वगैरह) तक पहुंचते हैं. कम इस्तेमाल को देखते हुए, सुरक्षा से जुड़े इस (छोटे) गड़बड़ी को ठीक करना सही है.

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

हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium बग