सामान्य MIME प्रकार
सर्वर और अपलॉड फ़ॉर्म इनी स्ट्रिंग्स पर निर्भर करते हैं; ग़लत टाइप से प्रीव्यू, डाउनलोड या CSP टूट सकती है।
| श्रेणी | MIME प्रकार | सामान्य एक्सटेंशन |
|---|---|---|
| HTML | text/html | .html |
| CSS | text/css | .css |
| JavaScript | text/javascript | .js |
| JSON | application/json | .json |
| XML | application/xml | .xml |
| सादा टेक्स्ट | text/plain | .txt |
| CSV | text/csv | .csv |
| application/pdf | ||
| ZIP | application/zip | .zip |
| PNG | image/png | .png |
| JPEG | image/jpeg | .jpg |
| GIF | image/gif | .gif |
| WebP | image/webp | .webp |
| SVG | image/svg+xml | .svg |
| ICO | image/x-icon | .ico |
| MP3 | audio/mpeg | .mp3 |
| WAV | audio/wav | .wav |
| MP4 | video/mp4 | .mp4 |
| WebM | video/webm | .webm |
| WOFF2 | font/woff2 | .woff2 |
| URL-एनकोडेड फ़ॉर्म | application/x-www-form-urlencoded | — |
| मल्टीपार्ट फ़ॉर्म | multipart/form-data | — |
टिप्पणियाँ
- कुछ ब्राउज़र कंटेंट का अनुमान लगाते हैं; फिर भी सर्वर से सही टाइप भेजें।
- JS का आधिकारिक टाइप text/javascript है (application/javascript पुराना हो चुका है)।
MIME प्रकार वास्तव में क्या नियंत्रित करता है
MIME प्रकार एक लेबल होता है जिसे सर्वर प्रतिक्रिया से जोड़ता है ताकि ब्राउज़र को पता चले कि बाइट्स किस प्रकार की हैं। text/html एक पेज रेंडर करता है, application/pdf एक रिडर खोलता है, image/svg+xml इनलाइन खींचा जा सकता है, और application/octet-stream डाउनलोड प्रॉम्प्ट शुरू करता है। दो बिल्कुल समान दिखने वाले फ़ाइलें इस एक हेडर के आधार पर पूरी तरह अलग व्यवहार कर सकती हैं। ब्राउज़र, अपलोड फॉर्म, ईमेल क्लाइंट और सामग्री सुरक्षा नियम सभी इसे पढ़ते हैं, इसलिए गलत होने से टूटे हुए पूर्वावलोकन, मजबूर डाउनलोड और ब्लॉक किए गए स्क्रिप्ट अक्सर होते हैं।
आज text/ और application/ कहाँ लागू होते हैं
पुरानी सलाह के अनुसार जावास्क्रिप्ट application/javascript था; वर्तमान मानक text/javascript है और application/javascript पुराना हो चुका है। CSS text/css, HTML text/html, सादा पाठ text/plain और CSV text/csv है — सभी text/* क्योंकि उन्हें मानव-पाठ्य के रूप में डिज़ाइन किया गया था। संरचित प्रारूप application/* हैं: application/json, application/xml, application/pdf, application/zip। उल्लेखनीय अपवाद SVG है, जो XML है लेकिन image/svg+xml के रूप में सर्व किया जाना चाहिए ताकि ब्राउज़र इसे डाउनलोड करने के बजाय रेंडर करे।
गलत प्रकार अपलोड और सुरक्षा को तोड़ते हैं
गलत लेबल वाला अपलोड बग का एक क्लासिक स्रोत है: JSON फ़ाइल को text/plain के रूप में सर्व किया गया हो तो API क्लाइंट अस्वीकार कर सकता है, छवि को octet-stream लौटने पर डिसप्ले करने के बजाय डाउनलोड हो जाती है, और टेक्स्ट/html के रूप में सर्व किए गए स्क्रिप्ट को ब्राउज़र ब्लॉक कर देता है। सख्त Content-Security-Policy नियम MIME प्रकार पर आधारित होते हैं, इसलिए गलत प्रकार से मिली स्टाइलशीट पूरी तरह अस्वीकार हो सकती है। जब पूर्वावलोकन या डाउनलोड अजीब व्यवहार करे, तो प्रतिक्रिया के Content-Type की जाँच आमतौर पर सबसे तेज़ निदान होती है।
Charset और कंटेंट स्निफिंग
टेक्स्ट प्रकारों के लिए, MIME प्रकार को charset के साथ जोड़ें — text/html; charset=utf-8 और application/json; charset=utf-8 किसी भी बहुभाषी सामग्री के लिए सुरक्षित डिफ़ॉल्ट हैं। पुराने ब्राउज़र फ़ाइल के बाइट्स से प्रकार अनुमान लगाने के लिए कंटेंट स्निफिंग का उपयोग करते थे, जिसका हमलावरों ने फ़ायदा उठाया; X-Content-Type-Options: nosniff भेजने से ब्राउज़र को घोषित प्रकार पर भरोसा करने को कहते हैं। हमेशा स्पष्ट और सही Content-Type भेजें, न कि फ़ाइल एक्सटेंशन पर निर्भर रहें, जिसे ब्राउज़र कभी नहीं देखता।
सर्वर और फॉर्म पर प्रकार सेट करना
यह मायने रखता है कि प्रकार कहाँ से आ रहा है। स्टैटिक होस्ट अपने आप एक्सटेंशन को मैप करते हैं, लेकिन वेब फ्रेमवर्क्स को अक्सर इसे स्पष्ट रूप से सेट करना पड़ता है — Express में res.type('json') के साथ, Nginx में types ब्लॉक के जरिए, और Cloudflare Pages में हेडर्स या फ़ाइल एक्सटेंशन के जरिए। HTML फॉर्म enctype का उपयोग अपलोड एन्कोडिंग नियंत्रित करने के लिए करते हैं: फ़ाइलों के लिए multipart/form-data और सादे फ़ील्ड के लिए application/x-www-form-urlencoded, जबकि JSON ожидает API application/json भेजता है। गलत भेजना 415 Unsupported Media Type और 400 प्रतिक्रियाओं का शांत स्रोत है जो तब तक रहस्यमय लगते हैं जब तक आप अनुरोध हेडर की जाँच न करें।
पहचानने योग्य अन्य परिवार
दैनिक वेब प्रारूपों के परे, कुछ परिवारों को पहचानना उपयोगी है। फॉन्ट font/woff2 और font/ttf का उपयोग करते हैं। छवियाँ फॉर्मेट के आधार में विभाजित हैं — image/jpeg, image/png, image/webp, image/avif, image/gif — जबकि ऑडियो और वीडियो audio/mpeg, audio/ogg, video/mp4 और video/webm का उपयोग करते हैं। आर्काइव और बाइनरी ब्लॉब application/zip, application/gzip और application/octet-stream हैं। जब कोई API ऐसी फ़ाइल लौटाए जिसकी यह पहचान नहीं कर पाता, तो octet-stream ईमानदार उत्तर है: यह क्लाइंट को डाउनलोड करने पर मजबूर करता है बजाय अनुमान लगाने के, जो तभी उपयोगी होता है जब सामग्री अज्ञात हो।
सामान्य प्रश्न
- .json फ़ाइल के लिए कौन सा MIME टाइप इस्तेमाल करें?
- JSON फ़ाइलों और API रिस्पॉन्स के लिए application/json इस्तेमाल करें। यह मानक टाइप है और हो सके तो UTF-8 में भेजें।
- .js फ़ाइल का MIME टाइप क्या है?
- JavaScript का आधिकारिक टाइप text/javascript है। पुराना application/javascript अब obsolete है, इसे इस्तेमाल न करें।
- SVG इमेज का MIME टाइप क्या है?
- SVG फ़ाइलें image/svg+xml टाइप का उपयोग करती हैं; इसी टाइप से सर्व करने पर ब्राउज़र उन्हें इनलाइन दिखाते हैं।