← ሁሉም መሣሪያዎች

የMIME ዓይነቶች ማጣቀሻ

MIME ዓይነቶች ምን እንደሆኑ፣ የtype/subtype ፎርማት እንዴት እንደሚሰራ፣ Content-Type በHTTP እና ኢሜይል የት እንደሚያስፈልግ፣ የተለመዱ ዓይነቶችና የተሳሳተ ኮድ ችግር እንደሚፈጥር ይወቁ።
ቅጥያMIME type

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 ካለ አሳሹ ምልክት (markup) ያሳያል፤ 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 — በ RFC 8259 የተገለጸው ብቸኛው ኦፊሴላዊ JSON ዓይነት (.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 ነገሮችን የሚያበላሸው ለምንድን ነው

አሳሾችና ደንበኞች የተገለጸውን ዓይነት ያምናሉ፣ ስለዚህ ስህተት መስራት ተጨባጭ ውጤት አለው። JSON API ምላሽን እንደ text/html ላክ እና አሳሹ ሊያሳየው ይሞክር ይሆናል፣ ወይም ጠንካራ ደንበኛ ኮድህ ከመሥራቱ በፊት የመተንተን ስህተት ይጥል ይሆናል። CSS ወይም JavaScript ፋይል በተሳሳተ ዓይነት ላክ እና X-Content-Type-Options: nosniff የተባለ የደህንነት ባህሪ አሳሹ እንዳይተገበር ያደርገዋል፣ በጸጥታ የገጽህን ስታይል ወይም ስክሪፕት ያበላሻል።

ማውረዶች ሌላው ክላሲክ ውድቀት ናቸው። ፋይል ከመታየት ይልቅ እንዲወርድ ከፈለግህ፣ ዓይነቱ ከContent-Disposition ራስጌ ጋር ይመዘናል። እንደ application/octet-stream የተላከ PDF በመመልከቻ ውስጥ ከመከፈት ይልቅ እንደ ጠቅላላ ፋይል ይወርዳል፤ እንደ text/plain የተላከ ምስል እንደ ትርጉም የለሽ ቁምፊዎች ይታያል። በስቀላ በኩል፣ በተሳሳተ ስያሜ የተለጠፈ ፋይል ንጹህ የቅጥያ ማረጋገጫን ሊያልፍ ይችላል፣ ለዚህም ነው ጠንካራ ማረጋገጫዎች በደንበኛ-ከቀረበው ዓይነት ከመታመን ይልቅ እውነተኛውን ባይት («magic number») የሚመረምሩት።

በታሪክ አሳሾች ራስጌው ስህተት ሲመስል እውነተኛውን ዓይነት ለመገመት ወይም «ማሽተት» ይሞክሩ ነበር። ያ ባህሪ የደህንነት ቀዳዳዎችን ስለፈጠረ፣ ዘመናዊው ምርጥ ተግባር ትክክለኛ Content-Type ሁልጊዜ መላክና ማሽተትን በnosniff ማሰናከል ነው። አጭሩ ስሪት፦ በእያንዳንዱ ምላሽ ላይ ዓይነቱን ሆነ ብለህ አዘጋጅ፣ አብዛኞቹ የማሳያ፣ የማውረድና የመተንተን ስህተቶች ይጠፋሉ።

በተደጋጋሚ የሚጠየቁ ጥያቄዎች

በ MIME ዓይነትና በሚዲያ ዓይነት መካከል ያለው ልዩነት ምንድን ነው?

ተመሳሳይ ነገር ናቸው። «MIME ዓይነት» ከኢሜይል የመጣ የቆየ ስም ነው፣ «ሚዲያ ዓይነት» ደግሞ IANA እና ዘመናዊ የ HTTP መስፈርቶች የሚመርጡት ቃል ነው። ሁለቱም ወደ type/subtype መለያ ያመለክታሉ።

ትክክለኛው የ JSON MIME ዓይነት ምንድን ነው?

በ RFC 8259 የተገለጸው application/json ነው። እንደ text/json ወይም application/x-javascript ያሉ አሮጌ አማራጮች ጊዜ ያለፈባቸው ናቸው፣ አንዳንድ ደንበኞችም ውድቅ ያደርጓቸዋል።

application/octet-stream ምን ማለት ነው?

ይበልጥ የተወሰነ መለያ ለሌለው ለዘፈቀደ ባይነሪ ውሂብ አጠቃላይ ዓይነት ነው። አገልጋዮች ላልታወቁ የፋይል ዓይነቶች እንደ ተለዋጭ ይጠቀሙበታል፣ ይህም በተለምዶ በአሳሽ ውስጥ ከመታየት ይልቅ ማውረድን ያስከትላል።

CSS ወይም JavaScript ፋይሌ የማይጫነው ለምንድን ነው?

ብዙ ጊዜ አገልጋዩ በተሳሳተ Content-Type ይልከዋል። X-Content-Type-Options ወደ nosniff ሲዘጋጅ፣ አሳሹ text/css ያልሆነ CSS ወይም የ JavaScript ዓይነት ያልሆነ ስክሪፕት እንዲተገበር ይከለክላል። ትክክለኛው ዓይነት እንዲላክ የአገልጋዩን ውቅር አስተካክል።

ወደ MIME ዓይነት charset ማከል እችላለሁ?

አዎ፣ ለጽሑፍ ቅርጸቶች እንደ text/html; charset=utf-8 ያለ መለኪያ በመጠቀም። ለ JSON ግን አላስፈላጊ ነው ምክንያቱም ቅርጸቱ በመስፈርት ሁልጊዜ UTF-8 ስለሆነ፣ ቢጨመርም ጉዳት የለውም።

የፋይል ቅጥያው MIME ዓይነቱን ይወስናል?

በ HTTP ላይ አይደለም። አገልጋዩ የትኛውን Content-Type እንደሚልክ ይወስናል፣ አሳሹም ያንን ራስጌ ያምናል። ቅጥያው ግልጽ ዓይነት ባልቀረበበት ጊዜ ብቻ ለመሣሪያዎችና ኦፐሬቲንግ ስርዓቶች እንደ ፍንጭ ያገለግላል።