MIME-Typen
Die Multipurpose Internet Mail Extensions, bekannt als MIME-Typ, ist eine Spezifikation, die das E-Mail-Format erweitert und von Browsern und Servern verwendet wird, um die Art des übertragenen Inhalts zu identifizieren. Die Spezifikation ist im IETF RFC 6838 standardisiert. Ein MIME-Typ ist eine Kennungszeichenkette, keine Dateierweiterung. Browser verwenden in der Regel den MIME-Typ (und nicht die Dateierweiterung), um zu bestimmen, wie ein Dokument verarbeitet werden soll; daher ist es wichtig, Server korrekt zu konfigurieren, um dem Antwort-Header den richtigen MIME-Typ zuzuordnen. Wenn dies nicht korrekt konfiguriert ist, können Browser den Inhalt der Dateien falsch interpretieren, und Websites funktionieren nicht ordnungsgemäß. Auch heruntergeladene Dateien können falsch behandelt werden.
Syntax
MIME-Typen
Type/SubtypeDie Struktur eines MIME-Typs besteht aus einem Typ und einem Subtyp, die durch einen Schrägstrich (/) getrennt sind, ohne Leerzeichen. MIME-Typen sind nicht case-sensitiv (Groß-/Kleinschreibung spielt keine Rolle), werden aber üblicherweise in Kleinbuchstaben geschrieben.
Ein MIME-Typ muss immer sowohl einen Typ als auch einen Subtyp enthalten. Jeder Typ verfügt über eine eigene Menge möglicher Subtypen.
Um zusätzliche Details bereitzustellen, können Sie einen optionalen Parameter verwenden.
MIME-Typen
type/subtype;parameter=valueMIME-Typen werden in zwei Kategorien unterteilt: diskret und multipart. Jeder Kategorie sind spezifische Subtypen zugeordnet.
Diskrete Typen
MIME-Typen
text/plain
text/html
image/jpeg
image/png
audio/mpeg
audio/ogg
audio/*
video/mp4
application/*
application/json
application/javascript
application/ecmascript
application/octet-stream
…Diskrete Typen geben die Kategorie des Dokuments an. Sie können zu einer der folgenden gehören:
| Typ | Beschreibung | Beispiel für typische Subtypen |
|---|---|---|
| application | Enthält Binärdaten | application/javascript, application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf |
| audio | Audiodatei | audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav |
| font | Schriftart-/Typografiedaten | font/woff, font/ttf, font/otf |
| model | Modelldaten für 3D-Objekte | model/3mf, model/vrml |
| text | Textdokument | text/plain, text/html, text/css, text/javascript |
| video | Videodatei | video/webm, video/ogg |
Zur Beschreibung eines Textdokuments, das keinem bestimmten Subtyp angehört, wird text/plain verwendet. Dokumente, die Binärdaten ohne einen spezifischen Subtyp enthalten, werden mit application/octet-stream beschrieben.
Multipart-Typen
MIME-Typen
multipart/form-data
multipart/byterangesMultipart-Typen kennzeichnen Dokumente, die aus mehreren Teilen bestehen, von denen jeder einen anderen MIME-Typ haben kann.
| Typ | Beschreibung | Beispiel für typische Subtypen |
|---|---|---|
| message | Nachricht, die andere Nachrichten umfasst | message/rfc822, message/partial |
| multipart | Daten, die aus mehreren Komponenten bestehen | multipart/form-data, multipart/byteranges |
Häufig verwendete MIME-Typen
Die folgende Tabelle listet weit verbreitete, moderne MIME-Typen auf. Viele veraltete Typen, die mit x- beginnen (z. B. image/x-icon), sind veraltet und sollten in neuen Projekten vermieden werden. Eine vollständige, autoritative Liste finden Sie im IANA Media Types registry.
| Dateierweiterung | Medientyp |
|---|---|
.html, .htm | text/html |
.css | text/css |
.js | application/javascript |
.json | application/json |
.png | image/png |
.jpg, .jpeg | image/jpeg |
.gif | image/gif |
.svg | image/svg+xml |
.mp3 | audio/mpeg |
.mp4 | video/mp4 |
.pdf | application/pdf |
.zip | application/zip |
Festlegen von Content-Type-Headern
Server müssen den korrekten Content-Type-Header senden, damit Browser wissen, wie sie mit der Antwort umgehen sollen. Nachfolgend finden Sie schnelle Beispiele für gängige Umgebungen:
Nginx
location /api/data {
default_type application/json;
add_header Content-Type application/json;
}Apache (.htaccess)
AddType application/json .json
AddType text/css .cssNode.js (Express)
app.get('/api/status', (req, res) => {
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ status: 'ok' }));
});Praxis
Was sind MIME-Typen und welche Funktion haben sie?