सामान्य MIME प्रकार

सर्वर और अपलॉड फ़ॉर्म इनी स्ट्रिंग्स पर निर्भर करते हैं; ग़लत टाइप से प्रीव्यू, डाउनलोड या CSP टूट सकती है।

अपडेट:

श्रेणीMIME प्रकारसामान्य एक्सटेंशन
HTMLtext/html.html
CSStext/css.css
JavaScripttext/javascript.js
JSONapplication/json.json
XMLapplication/xml.xml
सादा टेक्स्टtext/plain.txt
CSVtext/csv.csv
PDFapplication/pdf.pdf
ZIPapplication/zip.zip
PNGimage/png.png
JPEGimage/jpeg.jpg
GIFimage/gif.gif
WebPimage/webp.webp
SVGimage/svg+xml.svg
ICOimage/x-icon.ico
MP3audio/mpeg.mp3
WAVaudio/wav.wav
MP4video/mp4.mp4
WebMvideo/webm.webm
WOFF2font/woff2.woff2
URL-एनकोडेड फ़ॉर्मapplication/x-www-form-urlencoded—
मल्टीपार्ट फ़ॉर्मmultipart/form-data—

टिप्पणियाँ

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 टाइप का उपयोग करती हैं; इसी टाइप से सर्व करने पर ब्राउज़र उन्हें इनलाइन दिखाते हैं।

स्रोत