← تمام ٹولز

MIME ٹائپس ریفرنس

MIME ٹائپس کیا ہیں، type/subtype فارمیٹ کیسے کام کرتا ہے، HTTP اور ای میل میں Content-Type کہاں اہم ہے، عام اقسام، اور غلط ٹائپ چیزیں کیوں خراب کرتی ہے۔
ایکسٹینشنMIME ٹائپ

MIME ٹائپ اصل میں کیا ہوتی ہے

MIME ٹائپ، جسے میڈیا ٹائپ بھی کہا جاتا ہے، ایک مختصر لیبل ہے جو سافٹ ویئر کو بتاتا ہے کہ کسی فائل یا میسج باڈی میں کس قسم کا ڈیٹا موجود ہے۔ یہ ای میل میں پیدا ہوئی (نام Multipurpose Internet Mail Extensions کا مخفف ہے) لیکن آج یہ ویب پر ہر جگہ نظر آتی ہے۔ فارمیٹ ہمیشہ type/subtype ہوتا ہے: ایک وسیع زمرہ، ایک سلیش، اور ایک مخصوص فارمیٹ۔ تو text/html کا مطلب ہے "متن، HTML شکل میں"، image/png کا مطلب ہے "تصویر، PNG شکل میں"، اور application/json کا مطلب ہے "ایپلیکیشن ڈیٹا، JSON کے طور پر انکوڈ شدہ"۔

ٹاپ لیول ٹائپ IANA، سرکاری رجسٹری، کے برقرار رکھے گئے مقررہ سیٹ سے آتا ہے: text، image، audio، video، application، font، model، multipart، اور کچھ نئی اقسام جیسے haptics۔ سب ٹائپ مخصوص فارمیٹ ہے۔ فراہم کنندگان اپنی خود کی اقسام vnd. پریفکس کے ساتھ شامل کر سکتے ہیں (مثال کے طور پر application/vnd.ms-excel)، اور تجرباتی اقسام تاریخی طور پر x- پریفکس استعمال کرتی تھیں، حالانکہ اب اس روایت کی حوصلہ شکنی کی جاتی ہے۔

تاریک انڈیگو پس منظر پر لیبل شدہ زمرہ ٹائلز میں ترتیب دیے گئے تجریدی چمکتے فائل فارمیٹ آئیکنز
ہر فائل فارمیٹ ایک type/subtype لیبل سے میپ ہوتا ہے۔

MIME ٹائپس کہاں اہمیت رکھتی ہیں

سب سے اہم جگہ جہاں MIME ٹائپ ظاہر ہوتی ہے وہ HTTP Content-Type ریسپانس ہیڈر ہے۔ جب کوئی سرور ایک صفحہ، تصویر، یا API پے لوڈ بھیجتا ہے، یہ ہیڈر براؤزر کو بتاتا ہے کہ بائٹس کی تشریح کیسے کی جائے۔ اگر ہیڈر کہے text/html، تو براؤزر مارک اپ رینڈر کرتا ہے؛ اگر یہ کہے application/json، تو ایک fetch() کال اسے پارس کر سکتی ہے؛ اگر یہ کہے application/pdf، تو بلٹ ان ویور کھلتا ہے۔ یہی ہیڈر درخواست کی طرف بھی سفر کرتا ہے: جب آپ کوئی فارم یا API باڈی POST کرتے ہیں، Content-Type سرور کو بتاتا ہے کہ آپ نے جو بھیجا اسے کیسے پڑھا جائے۔

HTTP سے آگے، MIME ٹائپس کئی دیگر نظاموں کو چلاتی ہیں۔ ای میل کلائنٹس انہیں یہ فیصلہ کرنے کے لیے استعمال کرتے ہیں کہ اٹیچمنٹ ایک تصویر ہے جس کا پیش منظر دکھایا جائے یا بائنری جسے محفوظ کیا جائے۔ فائل اپ لوڈ ہینڈلرز اعلان کردہ ٹائپ کا معائنہ کرتے ہیں تاکہ فائلز کو قبول یا مسترد کیا جا سکے۔ اور آپریٹنگ سسٹم یا براؤزر ٹائپ استعمال کرتا ہے، صرف فائل ایکسٹینشن نہیں، ایک ڈیفالٹ ایپلیکیشن چننے کے لیے۔ یہی خیال اس بات کی بنیاد ہے کہ سرورز HTTP اسٹیٹس کوڈز کے ساتھ نتائج اور خرابیوں کی رپورٹ کیسے دیتے ہیں — غلط ٹائپ کے ساتھ 200 ریسپانس اتنا ہی خراب ہو سکتا ہے جتنا 404۔

وہ جو آپ روزانہ استعمال کریں گے

چند اقسام حقیقی ٹریفک کی اکثریت کا احاطہ کرتی ہیں:

  • text/html — ویب صفحات (ایکسٹینشن .html)
  • text/css — اسٹائل شیٹس (.css)
  • text/javascript — جاوا اسکرپٹ کے لیے تجویز کردہ ٹائپ (.js، .mjs)
  • application/json — واحد سرکاری JSON ٹائپ، RFC 8259 میں متعین (.json)
  • image/png، image/jpeg، image/webp، image/svg+xml — عام تصویری فارمیٹس
  • application/pdf — PDF دستاویزات (.pdf)
  • application/octet-stream — نامعلوم یا من مانی بائنری ڈیٹا کے لیے سب کچھ سمیٹنے والی قسم
  • text/plain — سادہ متن کے لیے ڈیفالٹ جس کی کوئی بھرپور ٹائپ نہیں

JSON ایک نوٹ کی مستحق ہے کیونکہ یہ لوگوں کو الجھا دیتی ہے۔ واحد درست ٹائپ application/json ہے۔ پرانا کوڈ کبھی کبھی text/json، text/plain، یا application/x-javascript استعمال کرتا تھا، لیکن یہ متروک ہیں اور کچھ کلائنٹس انہیں پارس کرنے سے انکار کر دیں گے۔ JSON کے لیے کوئی چارسیٹ پیرامیٹر بھی نہیں ہے — اسپیک UTF-8 لازم قرار دیتی ہے، اس لیے application/json; charset=utf-8 لکھنا بے ضرر تو ہے لیکن غیر ضروری ہے۔ فارمیٹس اور ایکسٹینشنز کی مکمل جدول کے لیے، ہمارے حوالہ جدول دیکھیں۔

ایک تجریدی ٹائپ بیج سے ٹیگ شدہ چمکتا ڈیٹا پیکٹ نیٹ ورک کنکشن پر بہتا ہوا
Content-Type پے لوڈ کے ساتھ HTTP پر سفر کرتا ہے۔

غلط Content-Type چیزوں کو کیوں توڑ دیتا ہے

براؤزرز اور کلائنٹس اعلان کردہ ٹائپ پر بھروسہ کرتے ہیں، اس لیے اسے غلط کرنے کے ٹھوس نتائج ہوتے ہیں۔ ایک JSON API ریسپانس کو text/html کے طور پر پیش کریں اور براؤزر اسے رینڈر کرنے کی کوشش کر سکتا ہے، یا سخت کلائنٹ آپ کا کوڈ چلنے سے پہلے ہی پارس ایرر پھینک سکتا ہے۔ کسی CSS یا جاوا اسکرپٹ فائل کو غلط ٹائپ کے ساتھ پیش کریں اور X-Content-Type-Options: nosniff نامی ایک سیکیورٹی فیچر براؤزر کو اسے لاگو کرنے سے انکار کروا دے گا، خاموشی سے آپ کے صفحے کی اسٹائلنگ یا اسکرپٹس کو توڑ دے گا۔

ڈاؤن لوڈز دوسری کلاسیکی خرابی ہیں۔ اگر آپ چاہتے ہیں کہ کوئی فائل دکھانے کی بجائے ڈاؤن لوڈ ہو، تو ٹائپ Content-Disposition ہیڈر کے ساتھ ساتھ اہمیت رکھتی ہے۔ ایک PDF جو application/octet-stream کے طور پر بھیجی جائے ویور میں کھلنے کی بجائے ایک عام فائل کے طور پر ڈاؤن لوڈ ہوتی ہے؛ ایک تصویر جو text/plain کے طور پر بھیجی جائے بے معنی حروف کے طور پر ظاہر ہوتی ہے۔ اپ لوڈ کی طرف، ایک غلط لیبل والی فائل ایک سادہ ایکسٹینشن چیک سے آسانی سے گزر سکتی ہے، یہی وجہ ہے کہ مضبوط تصدیق کنندے کلائنٹ کی فراہم کردہ ٹائپ پر بھروسہ کرنے کی بجائے حقیقی بائٹس ("میجک نمبر") کا معائنہ کرتے ہیں۔

تاریخی طور پر، براؤزرز حقیقی ٹائپ کا اندازہ لگانے، یا "سنِف" کرنے کی کوشش کرتے تھے جب ہیڈر غلط نظر آتا۔ اس رویے نے سیکیورٹی سوراخ پیدا کیے، اس لیے جدید بہترین طریقہ یہ ہے کہ ہمیشہ ایک درست Content-Type بھیجیں اور nosniff کے ساتھ سنِفنگ کو غیر فعال کریں۔ مختصر بات: ہر ریسپانس پر جان بوجھ کر ٹائپ سیٹ کریں، اور زیادہ تر رینڈرنگ، ڈاؤن لوڈ اور پارسنگ بگز غائب ہو جاتے ہیں۔

اکثر پوچھے جانے والے سوالات

MIME ٹائپ اور میڈیا ٹائپ میں کیا فرق ہے؟

یہ ایک ہی چیز ہیں۔ "MIME ٹائپ" ای میل سے پرانا نام ہے، جبکہ "میڈیا ٹائپ" وہ اصطلاح ہے جسے IANA اور جدید HTTP اسپیسیفیکیشنز ترجیح دیتے ہیں۔ دونوں type/subtype لیبل کا حوالہ دیتے ہیں۔

JSON کے لیے درست MIME ٹائپ کیا ہے؟

یہ application/json ہے، جو RFC 8259 میں متعین ہے۔ text/json یا application/x-javascript جیسے پرانے متبادل متروک ہیں اور کچھ کلائنٹس انہیں مسترد کر دیں گے۔

application/octet-stream کا کیا مطلب ہے؟

یہ بغیر کسی مخصوص لیبل کے من مانی بائنری ڈیٹا کے لیے عمومی ٹائپ ہے۔ سرورز اسے نامعلوم فائل اقسام کے لیے متبادل کے طور پر استعمال کرتے ہیں، جو عام طور پر براؤزر میں دکھانے کی بجائے ڈاؤن لوڈ شروع کرتا ہے۔

میری CSS یا جاوا اسکرپٹ فائل کیوں لوڈ نہیں ہوتی؟

اکثر سرور اسے غلط Content-Type کے ساتھ بھیجتا ہے۔ X-Content-Type-Options کو nosniff پر سیٹ کرنے سے، براؤزر ایسی CSS لاگو کرنے سے انکار کرتا ہے جو text/css نہ ہو یا ایسے اسکرپٹس جو جاوا اسکرپٹ ٹائپ نہ ہوں۔ سرور کنفیگریشن ٹھیک کریں تاکہ صحیح ٹائپ بھیجی جائے۔

کیا میں MIME ٹائپ میں چارسیٹ شامل کر سکتا ہوں؟

جی ہاں، متنی فارمیٹس کے لیے، text/html; charset=utf-8 جیسے پیرامیٹر کا استعمال کرتے ہوئے۔ JSON کے لیے یہ غیر ضروری ہے کیونکہ فارمیٹ اسپیسیفیکیشن کے مطابق ہمیشہ UTF-8 ہوتا ہے، حالانکہ اسے شامل کرنے سے کوئی نقصان نہیں۔

کیا فائل ایکسٹینشن MIME ٹائپ کا تعین کرتی ہے؟

HTTP پر نہیں۔ سرور فیصلہ کرتا ہے کہ کون سا Content-Type بھیجنا ہے، اور براؤزر اس ہیڈر پر بھروسہ کرتا ہے۔ ایکسٹینشن صرف ٹولز اور آپریٹنگ سسٹمز کے لیے ایک اشارے کے طور پر کام کرتی ہے جب کوئی واضح ٹائپ فراہم نہ کی گئی ہو۔