415 Unsupported Media Type
Verwendung
Wird die Fehlermeldung 415 Unsupported Media Type empfangen, liegt die Ursache häufig darin, dass der Server den Content-Type- oder den Content-Encoding-Header ablehnt. Alternativ gibt der Server diesen Fehler aufgrund einer genaueren Prüfung des Nachrichtenrumpfs zurück.
Im letzteren Fall meldet der Server diesen Fehler, weil das Parsen oder Erkennen des Inhalts fehlgeschlagen ist. Erkennt der Server den Medientyp, unterstützt das Format aber nicht, ist 415 Unsupported Media Type die präziseste Antwort. Weist der Inhalt strukturelle Fehler auf, sind 400 oder 422 angemessener.
Dieser Fehler ähnelt 406, mit dem Unterschied, dass 415 Unsupported Media Type auf dem Content-Type- und dem Content-Encoding-Header beruht und nicht auf dem Accept-Header.
SEO-Auswirkung
Suchmaschinen wie Google indexieren keine URL mit dem Antwortstatus 415. Zuvor indexierte URLs werden aus den Suchergebnissen entfernt.
Beispiel
Der Client möchte eine Nachricht als reinen Text senden, der Server sendet jedoch 415 Unsupported Media Type, weil nur HTML-Nachrichten akzeptiert werden. Daraufhin ändert der Client den Content-Type-Header, lässt die ursprüngliche Nachricht aber unverändert. Der Server erkennt, dass der Rumpf kein gültiges HTML ist, und lehnt die Anfrage ein zweites Mal ab.
Erste Anfrage
POST /blog/newmessage HTTP/1.1
Host: example.com
Content-Type: text/plain
Content-Length: 24
Good morning, Everybody!
Erste Antwort, basierend auf dem Content-Type-Header
HTTP/1.1 415 Unsupported Media Type
Content-Type: text/html
Content-Length: 138
<html>
<head>
<title>Unsupported Format</title>
</head>
<body>
<p>Please use HTML to post new messages.</p>
</body>
</html>
Nachfolgende Anfrage mit dem Versuch, die Validierung zu umgehen
POST /blog/newmessage HTTP/1.1
Host: example.com
Content-Type: text/html
Content-Length: 24
Good morning, Everybody!
Nachfolgende Antwort, basierend auf der Prüfung des Nachrichtenrumpfs
HTTP/1.1 415 Unsupported Media Type
Content-Type: text/html
Content-Length: 151
<html>
<head>
<title>Unsupported Format</title>
</head>
<body>
<p>No HTML tags found. Use HTML to post messages.
</p>
</body>
</html>
Behebung
Stellen Sie sicher, dass der Content-Type-Header einem Format entspricht, das der Server akzeptiert. Die API-Dokumentation listet in der Regel die unterstützten Medientypen auf. Gängige Werte sind application/json, application/xml, multipart/form-data und application/x-www-form-urlencoded.
Der Inhalt des Rumpfs muss zum deklarierten Content-Type passen. Reinen Text mit Content-Type: application/json zu senden schlägt fehl, weil der Server versucht, den Rumpf als JSON zu parsen. Manche Server sind bei der Schreibweise des Zeichensatzes streng: charset=UTF8 statt charset=UTF-8 löst auf bestimmten Plattformen eine Ablehnung aus.
Prüfen Sie beim Senden komprimierter Daten den Content-Encoding-Header. Eine Abweichung zwischen der deklarierten Kodierung (z. B. gzip) und dem tatsächlichen Komprimierungsformat des Rumpfs erzeugt ein 415.
Bestätigen Sie bei Datei-Uploads, dass der Dateityp in der Positivliste des Servers steht. Server beschränken Uploads häufig auf bestimmte Formate wie JPEG, PNG oder PDF.
Häufige Fehler in REST-API-Clients:
Die Anfrage mit einem Werkzeug wie Postman oder curl zu testen grenzt ein, ob das Problem im Anwendungscode oder in der Anfrage selbst liegt. Postman setzt den Content-Type-Header automatisch, sobald ein Rumpftyp ausgewählt ist.
Code-Referenzen
.NET
HttpStatusCode.UnsupportedMediaType
Rust
http::StatusCode::UNSUPPORTED_MEDIA_TYPE
Rails
:unsupported_media_type
Go
http.StatusUnsupportedMediaType
Symfony
Response::HTTP_UNSUPPORTED_MEDIA_TYPE
Python3.5+
http.HTTPStatus.UNSUPPORTED_MEDIA_TYPE
Java
java.net.HttpURLConnection.HTTP_UNSUPPORTED_TYPE
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE
Angular
@angular/common/http/HttpStatusCode.UnsupportedMediaType