Chrome के हर वर्शन में, हमें प्रॉडक्ट, उसकी परफ़ॉर्मेंस, और वेब प्लैटफ़ॉर्म की सुविधाओं में काफ़ी अपडेट और सुधार दिखते हैं.
Chrome 50 (बीटा वर्शन के रिलीज़ होने की अनुमानित तारीख: 10 से 17 मार्च) में, Chrome में कई बदलाव किए गए हैं. इस सूची में कभी भी बदलाव किया जा सकता है.
असुरक्षित कॉन्टेक्स्ट पर, AppCache का इस्तेमाल नहीं किया जा सकता
खास जानकारी: क्रॉस-साइट स्क्रिप्टिंग को रोकने के लिए, हम असुरक्षित ऑरिजिन पर AppCache का इस्तेमाल बंद कर रहे हैं. हमें उम्मीद है कि Chrome 52 में यह सुविधा सिर्फ़ उन ऑरिजिन पर काम करेगी जो एचटीटीपीएस पर कॉन्टेंट दिखाते हैं.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium में मौजूद गड़बड़ी
AppCache एक ऐसी सुविधा है जो किसी ऑरिजिन को ऑफ़लाइन और लगातार ऐक्सेस करने की अनुमति देती है. यह क्रॉस-साइट स्क्रिप्टिंग हमले के लिए, प्रिविलेज एस्कलेशन का एक बेहतरीन तरीका है. असुरक्षित ऑरिजिन से बेहतर सुविधाओं को हटाने के बड़े प्रयास के तहत.
Chrome, इस अटैक वेक्टर को सिर्फ़ एचटीटीपीएस पर अनुमति देकर हटा रहा है. हम Chrome 50 में एचटीटीपी के साथ काम करने की सुविधा को बंद कर रहे हैं. साथ ही, Chrome 52 में इसे पूरी तरह से हटा देंगे.
Document.defaultCharset को हटा दिया गया है
बहुत ज़्यादा शब्द हैं, पढ़ा नहीं गया: स्पेसिफ़िकेशन का पालन बेहतर बनाने के लिए, document.defaultCharset
को हटा दिया गया है.
हटाने का इंटेंट | Chromestatus ट्रैकर | CRBug से जुड़ी समस्या
document.defaultCharset
, Chrome 49 में बंद कर दी गई है. यह सिर्फ़ पढ़ने के लिए उपलब्ध प्रॉपर्टी है. यह उपयोगकर्ता की क्षेत्रीय सेटिंग के आधार पर, उनके सिस्टम की डिफ़ॉल्ट वर्ण एन्कोडिंग दिखाती है. ब्राउज़र, एचटीटीपी रिस्पॉन्स या पेज में एम्बेड किए गए मेटा टैग में, वर्ण कोड में बदलने की जानकारी का इस्तेमाल इस तरह करते हैं कि इस वैल्यू को बनाए रखना फ़ायदेमंद नहीं है.
इसके बजाय, एचटीटीपी हेडर में बताई गई पहली वैल्यू पाने के लिए, document.characterSet
का इस्तेमाल करें. अगर यह मौजूद नहीं है, तो आपको <meta>
एलिमेंट के charset
एट्रिब्यूट में बताई गई वैल्यू मिलेगी. उदाहरण के लिए, <meta
charset="utf-8">
. आखिर में, अगर इनमें से कोई भी उपलब्ध नहीं है, तो document.characterSet
उपयोगकर्ता की सिस्टम सेटिंग होगी.
इस बारे में ज़्यादा जानने के लिए, इस GitHub समस्या पर जाएं
सब-सोर्स एट्रिब्यूट को लिंक एलिमेंट से हटा दिया गया
खास जानकारी: HTMLLinkElement
के rel
एट्रिब्यूट के लिए, subresource
वैल्यू का इस्तेमाल करने की सुविधा हटाएं.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium में मौजूद गड़बड़ी
<link> पर subresource
एट्रिब्यूट का मकसद, ब्राउज़र के इंतज़ार के समय में किसी संसाधन को पहले से लोड करना था. जब कोई ब्राउज़र किसी पेज को डाउनलोड कर लेता है, तो वह दूसरे पेजों जैसे रिसॉर्स को पहले से डाउनलोड कर सकता है. इससे, जब उपयोगकर्ताओं के उन पेजों का अनुरोध किया जाता है, तो उन्हें ब्राउज़र की कैश मेमोरी से आसानी से वापस लाया जा सकता है.
subresource
एट्रिब्यूट में कई समस्याएं हैं. सबसे पहले, यह कभी भी उम्मीद के मुताबिक काम नहीं करता था. रेफ़र किए गए रिसॉर्स को कम प्राथमिकता के साथ डाउनलोड किया गया था. इस एट्रिब्यूट को Chrome के अलावा, किसी भी ब्राउज़र पर कभी लागू नहीं किया गया था. Chrome में इस सुविधा को लागू करने के दौरान एक गड़बड़ी हुई थी. इसकी वजह से, संसाधन दो बार डाउनलोड हो गए थे.
कॉन्टेंट को पहले से लोड करके, उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, डेवलपर के पास कई विकल्प होते हैं. इनमें से सबसे ज़्यादा पसंद किया जाने वाला विकल्प, सेवा वर्कर्स बनाना है. इससे, पहले से कैश मेमोरी में कॉन्टेंट सेव करने और Caches API का फ़ायदा लिया जा सकता है. अन्य समाधानों में, rel
एट्रिब्यूट की अन्य वैल्यू शामिल हैं. इनमें preconnect
, prefetch
, preload
, prerender
शामिल हैं. इनमें से कुछ विकल्प, प्रयोग के तौर पर उपलब्ध हैं. इसलिए, हो सकता है कि ये सभी के लिए उपलब्ध न हों.
असुरक्षित TLS वर्शन का फ़ॉलबैक हटाना
TL;DR: TLS के कम सुरक्षित या असुरक्षित वर्शन का इस्तेमाल करके, सर्वर को डेटा दिखाने के लिए मजबूर करने वाले तरीके को हटाएं.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium में मौजूद गड़बड़ी
ट्रांसपोर्ट लेयर सिक्योरिटी (TLS), वर्शन के लिए बातचीत करने के तरीके के साथ काम करती है. इससे, TLS के नए वर्शन को बिना किसी रुकावट के इस्तेमाल किया जा सकता है. कुछ सर्वर ने इसे इस तरह से लागू किया कि ब्राउज़र को फ़ॉलबैक के तौर पर असुरक्षित एंडपॉइंट का इस्तेमाल करना पड़ा. इस वजह से, हमलावर किसी भी वेबसाइट को, TLS के कम सुरक्षित वर्शन के लिए नेगोशिएट करने के लिए मजबूर कर सकते हैं. ऐसा सिर्फ़ उन वेबसाइटों के लिए नहीं किया जा सकता जिन्हें गलत तरीके से कॉन्फ़िगर किया गया है.
जिन साइटों पर असर पड़ा है वे ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
से कनेक्ट नहीं हो पाएंगी. एडमिन को यह पक्का करना चाहिए कि उनके सर्वर का सॉफ़्टवेयर अप-टू-डेट हो. अगर समस्या अब भी हल नहीं होती है, तो सर्वर के सॉफ़्टवेयर वेंडर से संपर्क करें और देखें कि क्या कोई समाधान उपलब्ध है.
KeyboardEvent.prototype.keyLocation को हटाना
बहुत ज़्यादा शब्द हैं, पढ़ा नहीं गया: Keyboard.prototype.location
एट्रिब्यूट के लिए, ग़ैर-ज़रूरी उपनाम हटाएं.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium में मौजूद गड़बड़ी
यह एट्रिब्यूट, Keyboard.prototype.location
एट्रिब्यूट का दूसरा नाम है. इससे, कीबोर्ड पर एक से ज़्यादा जगहों पर मौजूद बटनों के बीच अंतर करने में मदद मिलती है. उदाहरण के लिए, इन दोनों एट्रिब्यूट की मदद से डेवलपर, एक्सटेंडेड कीबोर्ड पर मौजूद दो Enter
बटन के बीच अंतर कर सकते हैं.
RTCPeerConnection के तरीकों में गड़बड़ी और सफलता के हैंडलर ज़रूरी हैं
खास जानकारी: WebRTC के RTCPeerConnection के तरीकों createOffer()
और createAnswer()
के लिए, अब गड़बड़ी वाले हैंडलर के साथ-साथ सफलता वाले हैंडलर की भी ज़रूरत होती है. पहले, सिर्फ़ एक सफलता हैंडलर के साथ इन तरीकों को कॉल किया जा सकता था. इस तरह के इस्तेमाल को बंद कर दिया गया है.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium में मौजूद गड़बड़ी
Chrome 49 में, हमने एक चेतावनी जोड़ी है. यह चेतावनी तब दिखती है, जब गड़बड़ी ठीक करने वाले फ़ंक्शन को दिए बिना, setLocalDescription()
या setRemoteDescription()
को कॉल किया जाता है. Chrome 50 के बाद, गड़बड़ी को हैंडल करने वाला आर्ग्युमेंट देना ज़रूरी है.
यह इन तरीकों पर वादे करने के लिए, WebRTC स्पेसिफ़िकेशन के मुताबिक, इन तरीकों को इस्तेमाल करने की अनुमति देने का एक हिस्सा है.
यहां WebRTC के RTCPeerConnection डेमो (main.js, लाइन 126) का उदाहरण दिया गया है:
function onCreateOfferSuccess(desc) {
pc1.setLocalDescription(desc, function() {
onSetLocalSuccess(pc1);
}, onSetSessionDescriptionError);
pc2.setRemoteDescription(desc, function() {
onSetRemoteSuccess(pc2);
}, onSetSessionDescriptionError);
pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
}
ध्यान दें कि setLocalDescription()
और setRemoteDescription()
, दोनों में गड़बड़ी ठीक करने वाला फ़ंक्शन है. पुराने ब्राउज़र सिर्फ़ सफलता हैंडलर की उम्मीद करते हैं. अगर गड़बड़ी हैंडलर मौजूद है, तो वे उसे अनदेखा कर देंगे. पुराने ब्राउज़र में इस कोड को कॉल करने से कोई अपवाद नहीं होगा.
आम तौर पर, हमारा सुझाव है कि प्रोडक्शन के लिए बने WebRTC ऐप्लिकेशन के लिए, adapter.js
का इस्तेमाल करें. यह एक शिम है, जिसे WebRTC प्रोजेक्ट मैनेज करता है. इससे ऐप्लिकेशन को स्पेसिफ़िकेशन में हुए बदलावों और प्रीफ़िक्स के अंतर से बचाया जा सकता है.
XMLHttpRequestProgressEvent अब काम नहीं करता
खास जानकारी: XMLHttpRequestProgressEvent
इंटरफ़ेस को हटा दिया जाएगा. साथ ही, position
और totalSize
एट्रिब्यूट भी हटा दिए जाएंगे.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium में मौजूद गड़बड़ी
यह इवेंट, Gecko की कम्पैटबिलिटी प्रॉपर्टी position
और
totalSize
के साथ काम करने के लिए था. Mozilla 22 में इन तीनों के लिए सहायता उपलब्ध नहीं है. साथ ही, इनकी जगह ProgressEvent
ने ले ली है.
var progressBar = document.getElementById("p"),
client = new XMLHttpRequest()
client.open("GET", "magical-unicorns")
client.onprogress = function(pe) {
if(pe.lengthComputable) {
progressBar.max = pe.total
progressBar.value = pe.loaded
}
}
प्रीफ़िक्स वाले एन्क्रिप्ट (सुरक्षित) किए गए मीडिया एक्सटेंशन हटाना
खास जानकारी: प्रीफ़िक्स वाले एन्क्रिप्ट किए गए मीडिया एक्सटेंशन हटा दिए गए हैं. अब इनकी जगह, स्पेसिफ़िकेशन के हिसाब से बनाए गए बिना प्रीफ़िक्स वाले एक्सटेंशन इस्तेमाल किए जाएंगे.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium में मौजूद गड़बड़ी
हमने Chrome 42 में, एन्क्रिप्ट किए गए मीडिया एक्सटेंशन का स्पेसिफ़िकेशन पर आधारित, बिना प्रीफ़िक्स वाला वर्शन उपलब्ध कराया है. इस एपीआई का इस्तेमाल, HTMLMediaElement
के साथ इस्तेमाल करने के लिए, डिजिटल राइट मैनेजमेंट सिस्टम को खोजने, चुनने, और उनसे इंटरैक्ट करने के लिए किया जाता है.
यह करीब एक साल पहले की बात है. साथ ही, बिना प्रीफ़िक्स वाले वर्शन में, प्रीफ़िक्स वाले वर्शन के मुकाबले ज़्यादा सुविधाएं हैं. इसलिए, अब एपीआई के प्रीफ़िक्स वाले वर्शन को हटाने का समय आ गया है.
SVGElement.offset प्रॉपर्टी के लिए सहायता हटाना
ज़्यादा जानकारी: HTMLElement
पर, ज़्यादातर प्रॉपर्टी के साथ काम करने के लिए, SVGElement के लिए ऑफ़सेट प्रॉपर्टी हटा दी गई हैं.
हटाने का इंटेंट | Chromestatus ट्रैकर | Chromium में मौजूद गड़बड़ी
ऑफ़सेट प्रॉपर्टी का इस्तेमाल, HTMLElement
और
SVGElement
, दोनों पर लंबे समय से किया जा रहा है. हालांकि, Gecko और Edge में इनका इस्तेमाल सिर्फ़ HTMLElement
पर किया जा सकता है. ब्राउज़र के बीच एक जैसी परफ़ॉर्मेंस देने के लिए, इन प्रॉपर्टी को Chrome 48 में बंद कर दिया गया था. अब इन्हें हटाया जा रहा है.
मिलती-जुलती प्रॉपर्टी, HTMLElement
का हिस्सा हैं. हालांकि, डेवलपर के पास इसके विकल्प के तौर पर, getBoundingClientRect()
का इस्तेमाल करने का विकल्प भी है