Der Content Type kann einem Browser mitteilen, was für ein Typ Inhalt, zum Beispiel ein PNG-Bild oder eine HTML-Seite, zugesendet wird. Damit ist es dem Browser einfacher möglich die Datei zu verarbeiten.
Was ist der Content Type?
Der Content Type, auch MIME-Type genannt, ist eine Angabe im Response Header des Webservers, in dem einem Browser mitgeteilt wird, um was für einen Typ Ressource es sich bei der übertragenen Datei handelt. Damit kann der Browser schneller arbeiten, da der Typ der Datei nicht erst, nach Ankunft der Datei, identifiziert werden muss.
Muss ich den Content Type mit angeben?
Nein. Die Nutzung des content-type Feldes in der Server-Antwort ist nicht vorgeschrieben, jedoch explizit erwünscht. Man bekommt jedoch als Webmaster, wenn dieses Feld vergessen wird, nicht automatisch Besuch der Internet-Polizei.
Warum sollte ich den Content Type angeben?
Das content-type Feld in der Server-Response vereinfacht es dem Browser enorm, mit den verschiedenen Ressourcen umzugehen, die vom Server ausgesendet werden.
Der Vorteil der Klassifizierung liegt auch darin, dass dem Browser die Entscheidung, wie mit der Datei umzugehen ist, abgenommen wird. Damit kann zum Beispiel sichergestellt werden, dass Texte mit einem speziellen Zeichensatz (zB GB 18030) als solche erkannt werden, da Browser ohne eine explizite Information bei Texten sonst den ISO-8859-1 Zeichensatz nutzen.
Zudem gibt es manchmal Fälle, in denen der Browser trotz definiertem content-type selbst auch noch einmal versucht diesen zu erkennen. Dies nennt sich MIME-Sniffing und kann mit einem speziellen response Header, dem X-Content-Type-Options, durch ein nosniff
, verhindert werden.
Was passiert wenn ich keinen Content Type angebe?
Gibt es keine Angabe dazu, um was für eine Ressource es sich handelt, muss der Browser dies selbst herausfinden. Dazu werden die meisten aktuellen Browser die ersten Bytes der Datei lesen und versuchen diese mit den häufigsten Content Typen zu vergleichen.
Dies kann gut gehen, muss es jedoch nicht. Besonders bei Texten mit einer ungewöhnlichen Zeichenkodierung kann es dazu führen, dass ein Browser zwar Text erkennt, jedoch die darin enthaltenen Sonderzeichen falsch wiedergibt.
Welche Content Typen gibt es?
Es gibt eine Vielzahl an verschiedenen Content Typen, die alle dazu dienen, eine übermittelte Ressource zu kennzeichnen.
Der MIME-Type wird immer als eine Kombination aus zwei Informationen ausgespielt, die zum einen angibt um welchen Typ Medium es sich handelt und dann, was für ein Unter-Typ dieses Mediums es ist. Schematisch sieht das dann so aus:
medientyp/subtyp
Hier ein paar der Content Typen, die bei der Erstellung von Inhalten für Webseiten häufig auftreten.
text
Hierbei geht es um Textdateien, wobei text/html
für Webseiten elementar ist. Als Subtypen gibt es zB noch text/css
und text/javascript
oder auch text/xml
uvm.
image
Mit dem image
MIME-Type kann ein Webseitenbetreiber übermittelte Bilder als JPEG (image/jpeg
) oder auch PNG (image/png
) kennzeichnen, sowie SVG Dateien (image/svg+xml
) und lustige Gifs von Katzen (image/gif
) einbinden.
Eine spannende Neuerung der letzten Jahre ist der Typ image/webp
welcher Web-optimierte statische und bewegte Bilder spezifiziert. WebP ist vor allem aus dem Grund spannend, dass dieses Dateiformat sehr kleine Dateigrößen hat und damit auch auf mobilen Endgerägen bandbreiteschonend zum Einsatz kommen kann.
video
Bei den Videos liegt die wichtigste Unterscheidung wahrscheinlich zwischen video/mpeg
und video/avi
.
audio
Bei den Audiodateien wird audio/mpeg
häufig noch bei gestreamter Musik genutzt.
application
Die Information die über application
kommuniziert wird, sagt dem Browser dass es sich um Dateien handelt die mit einem bestimmten Programm geöffnet werden sollen. Der wahrscheinlich interessanteste Aspekt für das Web ist wohl application/javascript
. Dies weist darauf hin, dass hier eine Serverseitige Javascriptdatei ausgeführt werden soll.
Youtube nutzt diesen MIME-Type zum Beispiel für die Videoseiten, da dort ein JavaScript Video-Player eingebunden ist, welcher sich dann um das Laden und Abspielen der eigentlichen Videodatei kümmert.
Fazit zum Content Type
Es sollte keinen besonderen Mehraufwand bedeuten, korrekte Content Type Informationen über den Server zu versenden. Diese Informationen können wiederum Browsern viel Arbeit abnehmen, welche gelegentlich zu falsch formatierten Texten oder inkorrekt erkannten Bildern oder Videos führen kann.
Es ist also ratsam sich mit dem Content Type der eigenen Ressourcen auseinander zu setzen und die richtigen Werte zu übermitteln.