HTTPQUERY
Deutsch

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