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

जो मेडले
जो मेडली

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

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

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

Chromium की गड़बड़ी

कुंजी जनरेट करने वाला एलिमेंट हटाएं

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

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

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

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

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

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

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

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

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

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

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

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

WebAudio: पहले से जुड़े AudioContext और ऑफ़लाइन ऑडियो कॉन्टेक्स्ट हटाएं

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

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

webkitCancelRequestAnimationFrame का इस्तेमाल बंद करना और हटाना

webkitCancelRequestAnimationFrame() वाला तरीका, वेंडर के लिए खास तौर पर पुराना एपीआई है. साथ ही, Chromium में स्टैंडर्ड cancelAnimationFrame() लंबे समय से काम करता रहा है. इसलिए, webkit वर्शन हटाया जा रहा है.

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

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

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

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

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

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

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

फ़िलहाल, सिर्फ़ Firefox और Chrome ही सर्विस वर्कर में FileReaderSync को दिखाते हैं. खास जानकारी में हुई समीक्षा के लिए Firefox ने सहमति दी है कि इस समस्या को ठीक किया जाना चाहिए. Chrome 59 से हटाए जाने का अनुमान है.

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

HTMLEmbedElement और HTMLObjectElement के लिए लेगसी कॉलर को रोकें

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

इस बदलाव से, Chrome में दिए गए खास बदलावों के हिसाब से बदलाव हो जाएंगे. लेगसी बिहेवियर Edge या Safari में काम नहीं करता और इसे Firefox से हटाया जा रहा है.

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी

"मोल-भाव" की RTCRtcpMuxPolicy सुविधा को बंद करें

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

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

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

रोक हटाने का इरादा | Chromium की गड़बड़ी

सबरिसॉर्स अनुरोधों में, एम्बेड किए गए क्रेडेंशियल की सुविधा बंद करें

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

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

हटाएं | Chromestatus Tracker | Chromium की गड़बड़ी