पाठ / जावास्क्रिप्ट के बजाय जावास्क्रिप्ट MIME प्रकार एप्लिकेशन / जावास्क्रिप्ट का उपयोग कब करें?


157

IE में काम नहीं कर रहे सवाल jQuery कोड के आधार पर , text/javascriptHTML दस्तावेजों में उपयोग किया जाता है ताकि इंटरनेट एक्सप्लोरर इसे समझ सके।

लेकिन मैं सोच रहा हूं, जब आप उपयोग करेंगे application/javascript, और इससे भी महत्वपूर्ण बात, आप इसके बजाय इसका उपयोग क्यों करेंगे text/javascript?


संभव डूप / स्पष्टीकरण: stackoverflow.com/questions/876561/…
Benn



जवाबों:


243

सिद्धांत रूप में, के अनुसार आरएफसी 4329 , application/javascript

यह माना जाता है कि applicationइसका कोई लेना-देना नहीं है कि क्या प्रकार पठनीय या निष्पादन योग्य है। इसका कारण यह है कि भाषा के प्रकार के आधार पर कस्टम वर्णसेट-निर्धारण तंत्र निर्धारित किए गए हैं, केवल सामान्य charsetपैरामीटर के बजाय । एक उपप्रकार को textएक छद्म पैरामीटर को बदलकर एक प्रॉक्सी द्वारा दूसरे वर्ण पर ट्रांसकोड करने में सक्षम होना चाहिए। यह जावास्क्रिप्ट का सच नहीं है क्योंकि:

ए। RFC का कहना है कि उपयोगकर्ता-एजेंटों को टाइप निर्धारित करने के लिए स्क्रिप्ट पर BOM- सूँघना चाहिए (मुझे यकीन नहीं है कि कोई ब्राउज़र वास्तव में ऐसा करता है);

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

इसलिए फ़ाइल के सटीक बाइट्स को बिल्कुल संरक्षित किया जाना चाहिए , जो इसे एक द्विआधारी applicationप्रकार बनाता है न कि तकनीकी रूप से चरित्र-आधारित text

उसी कारण से, application/xmlआधिकारिक तौर पर पसंद किया जाता है text/xml: XML का अपना इन-बैंड चारसेट सिग्नलिंग तंत्र है। और हर कोई applicationXML के लिए भी अनदेखा करता है।

text/javascriptऔर text/xmlआधिकारिक राइट थिंग नहीं हो सकता है, लेकिन आज हर कोई संगतता कारणों के लिए उपयोग करता है, और जिन कारणों से वे सही नहीं हैं वे व्यावहारिक रूप से पूरी तरह से महत्वहीन हैं।


4
सबसे "संगतता" समाधान प्रतिक्रिया में किसी भी सामग्री प्रकार को शामिल करने के लिए नहीं है। RFC कहता है कि एक स्पष्ट सामग्री प्रकार के बिना, रिसीवर इसे "संदर्भ द्वारा" व्याख्या करेगा जो हमेशा सभी ब्राउज़रों के लिए बहुत पहले ब्राउज़रों के लिए सही व्यवहार है
Pacerier

application/javascriptसंगतता मोड पर चल रहे IE और IE के साथ सावधान रहें IE=8। ऐसा लगता है जैसे इनलाइन स्क्रिप्ट का सही मूल्यांकन नहीं किया गया है। text/javascriptवहां ठीक काम करता है।
जोशे

2
@ स्पेसर - मुझे पता है कि यह टिप्पणी 5 साल पुरानी है, लेकिन आज यह अक्सर माइम प्रकारों को शामिल करने के लिए सबसे अच्छा है, विशेष रूप से मंच प्रकार की वेबसाइटों के लिए, सुरक्षा कारणों से। रिसीवर की व्याख्या करने से टाइप करने के लिए एक छवि के रूप में एक दुर्भावनापूर्ण जावास्क्रिप्ट फ़ाइल अपलोड करके हमला करने के लिए एक खुला छोड़ देता है, और फिर ब्राउज़र की व्याख्या करने और उस स्क्रिप्ट को चलाने के लिए। सभी प्रतिक्रियाओं के लिए सर्वर रिटर्न माइम प्रकार का होना बेहतर है और X-Content-Type-Options: nosniffब्राउज़र को टाइप करने से रोकने के लिए हेडर का उपयोग करें ।
sammy_winter

@sammy_winter मैं हर जगह इन जैसी चेतावनियाँ देखता हूँ और हर बार चरमराता हूँ। यदि मैंने उपयोगकर्ताओं को सामग्री अपलोड करने की अनुमति दी है, तो मैं शायद "ओह, हाँ, नाम png फ़ाइल के लिए regex से मिलान करूंगा, मैं उस पर भरोसा कर सकता हूं", क्या मैं नहीं करूंगा? यदि गलत हेडर एक "सुरक्षा मुद्दा" बन जाता है, तो समस्या शायद कहीं गहरी है, क्या आपको नहीं लगता है? यह छुपाने Server: nginxया जो कुछ भी नगनेक्स भेजता है, के साथ भी ऐसा ही है। जैसे कि जो कोई भी छेद ढूंढने में सक्षम है उसे यह जानने के लिए कि आपको कौन सा सर्वर चलाने के लिए स्पष्ट शीर्ष लेख की आवश्यकता है ...
साहसाहेह

17

जावास्क्रिप्ट के MIME प्रकार के साथ समस्या यह है कि वर्षों से कोई मानक नहीं है। अब हमें आधिकारिक MIME प्रकार के रूप में आवेदन / जावास्क्रिप्ट मिल गया है ।

लेकिन वास्तव में, MIME प्रकार बिल्कुल भी मायने नहीं रखता है, क्योंकि ब्राउज़र स्वयं प्रकार का निर्धारण कर सकता है। इसलिए HTML5 यह बताता है कि type="text/javascript"अब इसकी आवश्यकता नहीं है।


5

applicationक्योंकि .js-फाइल्स कुछ ऐसा नहीं है जिसे कोई उपयोगकर्ता पढ़ना चाहता है लेकिन ऐसा कुछ करना चाहिए जिसे निष्पादित किया जाना चाहिए।


यह आधिकारिक उत्तर है, लेकिन IE ने इस पर चुटकी ली।
Benn

20
@ जेन: हो सकता है क्योंकि IE उपयोगकर्ताओं को सभी जेएस फाइलों को पढ़ना पड़ता है क्योंकि वे ठीक से निष्पादित नहीं करते हैं? कम से कम, यह Microsoft द्वारा ईमानदार है;)
thejh

अपनी टिप्पणी से प्यार करें, लेकिन दुर्भाग्य से जो लोग जावास्क्रिप्ट नहीं पढ़ सकते हैं वे अभी भी IE का उपयोग करते हैं इसलिए हमें इससे निपटना होगा :(!
मार्क बैजेंस

1
मुझे नहीं लगता कि आप इसे पढ़ना चाहते हैं या नहीं, इसका कुछ भी कारण नहीं है। यह डेटा कैसे ट्रांसकोड हो जाता है - या बल्कि, यह हो सकता है के साथ क्या करना है।
Zenexer

तकनीकी रूप से, एचटीएमएल और सीएसएस भी दृश्य सामग्री के रूप में कोड के परिणाम का उत्पादन करने के लिए ब्राउज़र द्वारा "निष्पादित" (पार्स) किया जाता है और उपयोगकर्ता के लिए इसे "पढ़ने" के लिए अभिप्रेत नहीं है, इसलिए, इस उत्तर का बहुत मतलब नहीं है। मुझे लगता है कि "टेक्स्ट" क्या है और "एप्लिकेशन" क्या है के रूप में बड़ी उलझन है। अगर मैं इस मामले में मतदान कर सकता हूं, तो मैं कहूंगा कि आईईटीएफ को "पाठ" सामग्री पर विचार करना चाहिए text, और binaryसाथ applicationही-उक्त प्रकार के "उद्देश्य" को "छवि", या "दस्तावेज़", आदि के रूप में

1

एप्लिकेशन / जावास्क्रिप्ट का उपयोग करने के लिए सही प्रकार है, लेकिन जब से यह IE6-8 द्वारा समर्थित नहीं है, तो आप पाठ / जावास्क्रिप्ट के साथ अटक जा रहे हैं। यदि आप वैधता के बारे में परवाह नहीं करते हैं (HTML5 बहिष्कृत) तो बस एक प्रकार निर्दिष्ट न करें।


आपको यह कहां मिलेगा? मुझे पूरा यकीन है कि यह समर्थित है। या, कम से कम, इसे अनदेखा किया जाएगा।
ज़ेनेक्सर

@Zenexer ने एक और सवाल का जवाब पढ़ा । लगातार IE संगतता का मतलब नहीं है application/javascript
कैमिलो मार्टिन

@CamiloMartin मैं इसे IE के साथ ठीक समय के 6 से नीचे का उपयोग करता हूं। वे केवल जावास्क्रिप्ट के लिए डिफ़ॉल्ट हैं।
ज़ेनेक्सर

@ ज़ेनज़र एचएम, अजीब। मुझे आश्चर्य है कि अन्य प्रश्नोत्तर में क्या समस्या थी।
कैमिलो मार्टिन

@Zenexer यह एक समय हो गया है क्योंकि मुझे इससे निपटना पड़ा है, लेकिन यहाँ IE6-8 के साथ इस समस्या के कुछ अन्य कारण हैं । पूरी तरह से निश्चित नहीं है कि यह केवल कुछ समय के लिए ही क्यों लगता है लेकिन मेरे अनुभव में इसने मुद्दों को जन्म दिया है।
राडु
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.