← Ҳамаи асбобҳо

Маълумотнома оид ба Навъҳои MIME

MIME чист, формати type/subtype чӣ гуна кор мекунад, Content-Type дар HTTP ва почта дар куҷо муҳим аст ва хатои навъ чӣ вайрон мекунад.
ПасвандНамуди 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 — навъи тавсияшуда барои 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 параметри charset ҳам нест — спецификатсия UTF-8-ро ҳатмӣ мекунад, пас навиштани application/json; charset=utf-8 зиёдатист, гарчанде ки бехатар аст. Барои ҷадвали пуртари форматҳо ва пасвандҳо, ҷадвалҳои маълумотии моро бинед.

Бастаи маълумоти дурахшон, ки бо нишони абстрактии навъ тамғагузоришуда дар тӯли пайвасти шабака ҷорист
Content-Type бо боркунанда тавассути HTTP сафар мекунад.

Чаро Content-Type-и нодуруст чизҳоро вайрон мекунад

Браузерҳо ва мизоҷон ба навъи эъломшуда бовар мекунанд, пас нодуруст кардани он оқибатҳои мушаххас дорад. Ҷавоби API-и JSON-ро ҳамчун text/html хидмат кунед ва браузер шояд кӯшиш кунад онро рендер кунад, ё мизоҷи сахтгир шояд пеш аз он ки рамзи шумо ягон бор иҷро шавад, хатои таҳлилро партояд. Файли CSS ё JavaScript-ро бо навъи нодуруст хидмат кунед ва хусусияти амниятие бо номи X-Content-Type-Options: nosniff хоҳад кард, ки браузер аз татбиқи он даст кашад, хомӯшона услуб ё скриптҳои саҳифаи шуморо вайрон мекунад.

Боргириҳо хатогии дигари классикианд. Агар шумо хоҳед файле боргирӣ шавад, на нишон дода шавад, навъ дар паҳлуи сарлавҳаи Content-Disposition аҳамият дорад. PDF-е, ки ҳамчун application/octet-stream фиристода мешавад, ба ҷои кушода шудан дар бинанда ҳамчун файли умумӣ боргирӣ мешавад; тасвире, ки ҳамчун text/plain фиристода мешавад, ҳамчун аломатҳои бемаъно пайдо мешавад. Дар тарафи боркунӣ, файли нодуруст тамғагузошташуда метавонад аз тафтиши соддаи пасванд гузарад, ки барои ин санҷандаҳои устувор ба ҷои бовар кардан ба навъи мизоҷ-таъминшуда, байтҳои воқеиро («рақами сеҳрнок») тафтиш мекунанд.

Таърихан, браузерҳо кӯшиш мекарданд, ки навъи воқеиро вақте ки сарлавҳа нодуруст ба назар мерасид, «бӯй кашанд». Ин рафтор сӯрохиҳои амниятиро ба вуҷуд овард, пас амалияи бењтарини муосир ҳамеша фиристодани Content-Type-и дуруст ва хомӯш кардани бӯйкашӣ бо nosniff мебошад. Хулосаи кӯтоҳ: навъро дар ҳар як ҷавоб бодиққат таъин кунед, ва аксари хатогиҳои рендер, боргирӣ ва таҳлил нест мешаванд.

Саволҳои зуд додашаванда

Фарқи байни навъи MIME ва навъи медиа чист?

Онҳо як чиз ҳастанд. «Навъи MIME» номи кӯҳна аз почтаи электронӣ аст, дар ҳоле ки «навъи медиа» истилоҳест, ки IANA ва спецификатсияҳои муосири HTTP тарҷеҳ медиҳанд. Ҳар ду ба тамғаи type/subtype ишора мекунанд.

Навъи дурусти MIME барои JSON чист?

Он application/json аст, дар RFC 8259 муайяншуда. Алтернативаҳои кӯҳна ба монанди text/json ё application/x-javascript кӯҳнашудаанд ва баъзе мизоҷон онҳоро рад мекунанд.

application/octet-stream чӣ маъно дорад?

Ин навъи умумӣ барои маълумоти дуиливии дилхоҳ бе тамғаи мушаххастар аст. Серверҳо онро ҳамчун бозгашт барои навъҳои файли номаълум истифода мебаранд, ки одатан боргириро ба ҷои намоиши дарунбраузерӣ ба вуҷуд меорад.

Чаро файли CSS ё JavaScript-и ман бор намешавад?

Аксар вақт сервер онро бо Content-Type-и нодуруст мефиристад. Бо X-Content-Type-Options ба nosniff танзимшуда, браузер аз татбиқи CSS-е, ки text/css нест, ё скриптҳое, ки навъи JavaScript нестанд, даст мекашад. Танзимоти серверро ислоҳ кунед, то навъи дуруст фиристода шавад.

Оё ман метавонам charset ба навъи MIME илова кунам?

Бале, барои форматҳои матнӣ, бо параметре ба монанди text/html; charset=utf-8. Барои JSON он лозим нест, зеро формат ҳамеша аз рӯи спецификатсия UTF-8 аст, гарчанде ки илова кардани он зараре надорад.

Оё пасванди файл навъи MIME-ро муайян мекунад?

Дар HTTP не. Сервер қарор мекунад, ки кадом Content-Type-ро фиристад, ва браузер ба ин сарлавҳа бовар мекунад. Пасванд танҳо ҳамчун ишора барои абзорҳо ва системаҳои амалиётӣ вақте амал мекунад, ки ягон навъи возеҳ дода нашудааст.