Ce este de fapt un tip MIME
Un tip MIME, numit și tip media, este o etichetă scurtă care spune software-ului ce fel de date conține un fișier sau corpul unui mesaj. S-a născut în e-mail (numele provine de la Multipurpose Internet Mail Extensions) dar astăzi apare peste tot pe web. Formatul este mereu tip/subtip: o categorie generală, o bară oblică, și un format specific. Astfel, text/html înseamnă „text, în format HTML”, image/png înseamnă „o imagine, în format PNG”, iar application/json înseamnă „date de aplicație, codificate ca JSON”.
Tipul de nivel superior provine dintr-un set fix, menținut de IANA, registrul oficial: text, image, audio, video, application, font, model, multipart, și câteva mai noi, precum haptics. Subtipul este formatul specific. Furnizorii își pot adăuga propriile subtipuri cu prefixul vnd. (de exemplu application/vnd.ms-excel), iar tipurile experimentale foloseau istoric un prefix x-, deși această convenție este acum descurajată.

Unde contează tipurile MIME
Cel mai important loc în care apare un tip MIME este antetul de răspuns HTTP Content-Type. Când un server trimite o pagină, o imagine sau datele unui API, acest antet îi spune browserului cum să interpreteze octeții. Dacă antetul indică text/html, browserul randează marcajul; dacă indică application/json, un apel fetch() îl poate analiza; dacă indică application/pdf, se deschide vizualizatorul integrat. Același antet circulă și la nivel de cerere: când trimiți printr-un formular sau printr-un corp de API cu POST, Content-Type îi spune serverului cum să citească ce ai trimis.
Dincolo de HTTP, tipurile MIME conduc alte câteva sisteme. Clienții de e-mail le folosesc pentru a decide dacă un atașament este o imagine de previzualizat sau un fișier binar de salvat. Gestionarii de încărcare a fișierelor inspectează tipul declarat pentru a accepta sau respinge fișierele. Iar sistemul de operare sau browserul folosește tipul, nu doar extensia fișierului, pentru a alege o aplicație implicită. Aceeași idee stă la baza modului în care serverele raportează rezultate și erori alături de codurile de stare HTTP — un răspuns 200 cu tipul greșit poate fi la fel de defect ca un 404.
Cele pe care le vei folosi zilnic
Un mic număr de tipuri acoperă majoritatea covârșitoare a traficului real:
text/html— pagini web (extensia.html)text/css— foi de stil (.css)text/javascript— tipul recomandat pentru JavaScript (.js,.mjs)application/json— singurul tip JSON oficial, definit în RFC 8259 (.json)image/png,image/jpeg,image/webp,image/svg+xml— formate obișnuite de imagineapplication/pdf— documente PDF (.pdf)application/octet-stream— categoria generică pentru date binare necunoscute sau arbitraretext/plain— implicit pentru text simplu care nu are un tip mai specific
JSON merită o mențiune specială pentru că îi pune adesea pe oameni în încurcătură. Singurul tip corect este application/json. Codul mai vechi folosea uneori text/json, text/plain sau application/x-javascript, dar acestea sunt învechite, iar unii clienți vor refuza să le proceseze. Nici nu există un parametru charset pentru JSON — specificația impune UTF-8, așa că scrierea application/json; charset=utf-8 este redundantă, deși inofensivă. Pentru un tabel mai complet cu formate și extensii, vezi tabelele noastre de referință.

De ce un Content-Type greșit strică lucrurile
Browserele și clienții au încredere în tipul declarat, așa că a-l greși are consecințe concrete. Servește un răspuns de API JSON ca text/html și browserul poate încerca să-l randeze, sau un client strict poate arunca o eroare de analiză înainte ca propriul tău cod să apuce să ruleze. Servește un fișier CSS sau JavaScript cu tipul greșit, iar o funcție de securitate numită X-Content-Type-Options: nosniff va face ca browserul să refuze să-l aplice, stricând tăcut stilurile sau scripturile paginii.
Descărcările reprezintă cealaltă cauză clasică de eșec. Dacă vrei ca un fișier să fie descărcat, nu afișat, tipul contează alături de antetul Content-Disposition. Un PDF trimis ca application/octet-stream se descarcă ca fișier generic, în loc să se deschidă în vizualizator; o imagine trimisă ca text/plain apare ca un șir de caractere fără sens. La încărcare, un fișier etichetat greșit poate trece cu ușurință de o verificare naivă a extensiei, motiv pentru care validatoarele robuste inspectează octeții reali (așa-numitul „magic number”) în loc să aibă încredere în tipul furnizat de client.
Istoric, browserele încercau să ghicească, sau să „adulmece” (sniff), tipul real atunci când antetul părea greșit. Acest comportament a cauzat breșe de securitate, așa că practica modernă recomandată este să trimiți întotdeauna un Content-Type corect și să dezactivezi adulmecarea cu nosniff. Pe scurt: stabilește tipul deliberat pentru fiecare răspuns, și majoritatea erorilor de randare, descărcare și analiză dispar.
Întrebări frecvente
Care este diferența dintre un tip MIME și un tip media?
Sunt același lucru. „Tip MIME” este numele mai vechi, provenit din e-mail, în timp ce „tip media” este termenul preferat de IANA și de specificațiile HTTP moderne. Ambele se referă la eticheta tip/subtip.
Care este tipul MIME corect pentru JSON?
Este application/json, definit în RFC 8259. Alternativele mai vechi, precum text/json sau application/x-javascript, sunt învechite, iar unii clienți le vor respinge.
Ce înseamnă application/octet-stream?
Este tipul generic pentru date binare arbitrare, fără o etichetă mai specifică. Serverele îl folosesc ca soluție de rezervă pentru tipuri de fișiere necunoscute, ceea ce declanșează de obicei o descărcare, nu o afișare în browser.
De ce nu se încarcă fișierul meu CSS sau JavaScript?
Adesea, serverul îl trimite cu Content-Type greșit. Cu X-Content-Type-Options setat pe nosniff, browserul refuză să aplice CSS care nu este text/css sau scripturi care nu au un tip JavaScript. Corectează configurația serverului astfel încât să fie trimis tipul corect.
Pot adăuga un charset la un tip MIME?
Da, pentru formatele text, folosind un parametru precum text/html; charset=utf-8. Pentru JSON este inutil, deoarece formatul este întotdeauna UTF-8 conform specificației, deși adăugarea lui nu dăunează.
Extensia fișierului determină tipul MIME?
Nu prin HTTP. Serverul decide ce Content-Type trimite, iar browserul are încredere în acel antet. Extensia acționează doar ca un indiciu pentru instrumente și sisteme de operare atunci când nu este furnizat niciun tip explicit.
