Vai al contenuto

Tipi MIME

Un tipo MIME — il valore dell'intestazione Content-Type — è come un server dice cosa sia un file. Nulla del nome file raggiunge il browser, quindi l'estensione è un suggerimento per te e il tipo è il fatto per il client. Sbagliarsi e un foglio di stile viene ignorato, un carattere non si carica, o un PDF si scarica quando avrebbe dovuto aprirsi.

Questa pagina elenca l'estensione e il tipo che lo strumento di ricerca del sito restituisce per esso, così i due non possono mai disaccordarsi. Dove più estensioni condividono un tipo — jpg, jpeg e jpe, o yaml e yml — ognuno è elencato sulla sua riga, perché guardi quella che hai.

Due regole spiegano la maggior parte delle sorprese di seguito. Un tipo che inizia con application/vnd. è una registrazione del fornitore piuttosto che uno standard aperto, per questo i tipi Office sono così lunghi. E un tipo che il server non conosce è meglio inviarlo come application/octet-stream, che dice al browser di scaricare piuttosto che indovinare.

Web e testo

21

text/* è la famiglia che un browser mostrerà piuttosto che scaricare, e l'unica dove un parametro charset ha importanza — text/html; charset=utf-8.

EstensioneTipo MIMECosa è
.htmltext/htmlDocumento HTML
.htmtext/htmlDocumento HTML, estensione breve
.shtmltext/htmlHTML con include lato server
.xhtmlapplication/xhtml+xmlDocumento XHTML
.csstext/cssFoglio di stile
.csvtext/csvValori separati da virgola
.txttext/plainTesto semplice
.mdtext/markdownSorgente Markdown
.icstext/calendarEvento calendario
.xmlapplication/xmlDocumento XML
.jstext/javascriptJavaScript
.mjstext/javascriptModulo JavaScript ES
.jsonapplication/jsonDati JSON
.jsonldapplication/ld+jsonDati strutturati JSON-LD
.webmanifestapplication/manifest+jsonManifest dell'app web
.yamlapplication/yamlDocumento YAML
.ymlapplication/yamlYAML, estensione breve
.tomlapplication/tomlConfigurazione TOML
.sqlapplication/sqlScript SQL
.shapplication/x-shScript shell
.wasmapplication/wasmModulo WebAssembly

Documenti

12

I tipi Office sono lunghi perché codificano il fornitore, lo standard e la parte — vnd. significa una registrazione del fornitore piuttosto che un formato aperto.

EstensioneTipo MIMECosa è
.pdfapplication/pdfDocumento PDF
.rtfapplication/rtfTesto ricco
.docapplication/mswordDocumento Word, binario legacy
.docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentDocumento Word
.xlsapplication/vnd.ms-excelCartella di lavoro Excel, binario legacy
.xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetCartella di lavoro Excel
.pptapplication/vnd.ms-powerpointPresentazione PowerPoint, binario legacy
.pptxapplication/vnd.openxmlformats-officedocument.presentationml.presentationPresentazione PowerPoint
.odtapplication/vnd.oasis.opendocument.textTesto OpenDocument
.odsapplication/vnd.oasis.opendocument.spreadsheetFoglio di calcolo OpenDocument
.odpapplication/vnd.oasis.opendocument.presentationPresentazione OpenDocument
.epubapplication/epub+zipE-book EPUB

Immagini

14

Ogni tipo di immagine è riconoscibile dai suoi primi byte, quindi un browser di solito la renderà correttamente anche con un'etichetta errata dal server. SVG è l'eccezione che non dovresti mai etichettare male — è un documento che può contenere script.

EstensioneTipo MIMECosa è
.pngimage/pngImmagine PNG
.jpgimage/jpegImmagine JPEG
.jpegimage/jpegImmagine JPEG, estensione lunga
.jpeimage/jpegImmagine JPEG, estensione rara
.gifimage/gifImmagine GIF
.webpimage/webpImmagine WebP
.avifimage/avifImmagine AVIF
.svgimage/svg+xmlImmagine vettoriale SVG
.bmpimage/bmpImmagine bitmap
.icoimage/vnd.microsoft.iconFile icona
.tifimage/tiffImmagine TIFF
.tiffimage/tiffImmagine TIFF, estensione lunga
.heicimage/heicImmagine HEIC
.heifimage/heifImmagine HEIF

Audio

11

Contenitore e codec sono due domande diverse. audio/ogg dice come il file è avvolto; cosa c'è dentro potrebbe essere Vorbis, Opus o FLAC.

EstensioneTipo MIMECosa è
.mp3audio/mpegAudio MP3
.wavaudio/wavAudio WAV
.oggaudio/oggAudio Ogg
.ogaaudio/oggAudio Ogg, estensione esplicita
.opusaudio/opusAudio Opus
.m4aaudio/mp4Audio AAC in contenitore MP4
.flacaudio/flacAudio FLAC senza perdite
.webaaudio/webmAudio WebM
.aacaudio/aacAudio AAC grezzo
.midaudio/midiSequenza MIDI
.midiaudio/midiMIDI, estensione lunga

Video

9

Lo streaming di un video ha bisogno di più del tipo giusto — il server deve rispondere anche alle richieste di intervallo, o il browser scarica l'intero file prima di riprodurlo.

EstensioneTipo MIMECosa è
.mp4video/mp4Video MP4
.m4vvideo/mp4Video MP4, estensione Apple
.webmvideo/webmVideo WebM
.ogvvideo/oggVideo Ogg
.movvideo/quicktimeVideo QuickTime
.avivideo/x-msvideoVideo AVI
.mkvvideo/x-matroskaVideo Matroska
.wmvvideo/x-ms-wmvVideo Windows Media
.3gpvideo/3gppVideo mobile 3GPP

Caratteri

5

La famiglia font/* è stata registrata tardi; gli strumenti più vecchi inviano ancora application/font-woff e application/x-font-ttf, che i browser accettano ma non dovrebbero essere scritti per nulla di nuovo.

EstensioneTipo MIMECosa è
.wofffont/woffCarattere web WOFF
.woff2font/woff2Carattere web WOFF2
.ttffont/ttfCarattere TrueType
.otffont/otfCarattere OpenType
.eotapplication/vnd.ms-fontobjectOpenType incorporato, solo Internet Explorer

Archivi e binari

12

application/octet-stream è la risposta onesta quando non si sa nulla di meglio, ed è anche quello che forza un download piuttosto che una resa.

EstensioneTipo MIMECosa è
.zipapplication/zipArchivio ZIP
.gzapplication/gzipArchivio Gzip
.tarapplication/x-tarArchivio tar
.7zapplication/x-7z-compressedArchivio 7-Zip
.rarapplication/vnd.rarArchivio RAR
.bz2application/x-bzip2Archivio Bzip2
.isoapplication/x-iso9660-imageImmagine disco
.binapplication/octet-streamDati binari sconosciuti
.exeapplication/x-msdownloadEseguibile Windows
.apkapplication/vnd.android.package-archivePacchetto Android
.debapplication/vnd.debian.binary-packagePacchetto Debian
.swfapplication/x-shockwave-flashFilm Flash, da lungo tempo obsoleto

FAQ

Cosa succede se il tipo MIME è sbagliato?
Dipende dal tipo. I browser rifiutano intenzionalmente un foglio di stile che non arriva come text/css e uno script modulo che non arriva come tipo JavaScript. Le immagini sono riconosciute dai loro primi byte e di solito sopravvivono a un'etichetta sbagliata. E qualsiasi cosa servita come text/plain viene mostrata piuttosto che scaricata.
È corretto text/javascript o application/javascript?
text/javascript. Era la forma storica, application/javascript l'ha sostituita, e lo standard attuale è tornato a text/javascript e ha marcato l'altro come obsoleto. Ogni browser accetta entrambi, quindi questo importa solo per quello che scrivi nella nuova configurazione.
Perché il tipo Word .docx è così lungo?
Perché codifica l'intero percorso del formato: una registrazione del fornitore (vnd.), la famiglia OOXML e quale documento di quella famiglia è. La lunghezza è il prezzo di una voce del registro che non può scontrarsi con nessun altro.
Ho bisogno di un charset su ogni tipo?
Solo sui tipi di testo, e in pratica solo dove l'impostazione predefinita sarebbe sbagliata. text/html; charset=utf-8 merita di essere esplicito; image/png; charset=utf-8 è privo di significato. JSON è definito come UTF-8, quindi application/json non prende charset.
Come cerco uno velocemente?
Lo strumento di ricerca del tipo MIME su questo sito converte un elenco di estensioni in tipi, o tipi indietro in estensioni, e può emettere il risultato come un blocco di configurazione nginx o Apache.