HTTPQUERY
Bahasa Indonesia

415 Unsupported Media Type

Penggunaan

Ketika pesan error 415 Unsupported Media Type diterima, penyebabnya sering kali adalah header Content-Type atau Content-Encoding yang ditolak oleh server. Sebagai alternatif, server mengembalikan error ini berdasarkan pemeriksaan lebih lanjut terhadap body pesan.

Pada kasus terakhir, server menunjukkan error ini karena gagal mengurai atau mengenali kontennya. Ketika server mengenali media type tetapi tidak mendukung formatnya, 415 Unsupported Media Type adalah response paling akurat. Ketika konten memiliki kesalahan struktural, 400 atau 422 lebih tepat.

Error ini mirip dengan 406, hanya saja 415 Unsupported Media Type didasarkan pada header Content-Type dan Content-Encoding, bukan pada header Accept.

Dampak SEO

Mesin pencari seperti Google tidak akan mengindeks URL dengan status response 415. URL yang sebelumnya terindeks akan dihapus dari hasil pencarian.

Contoh

Klien ingin mengirim sebuah pesan dalam teks biasa, tetapi server mengirim 415 Unsupported Media Type karena hanya pesan HTML yang diterima. Klien kemudian mengubah header Content-Type, tetapi membiarkan pesan aslinya tidak berubah. Server mengenali bahwa body tersebut bukan HTML yang valid dan menolak permintaan itu untuk kedua kalinya.

Permintaan awal

POST /blog/newmessage HTTP/1.1
Host: example.com
Content-Type: text/plain
Content-Length: 24

Good morning, Everybody!

Response awal, berdasarkan header Content-Type

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>

Permintaan berikutnya yang mencoba melewati validasi

POST /blog/newmessage HTTP/1.1
Host: example.com
Content-Type: text/html
Content-Length: 24

Good morning, Everybody!

Response berikutnya, berdasarkan pemeriksaan body pesan

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>

Cara memperbaiki

Pastikan header Content-Type cocok dengan format yang diterima server. Dokumentasi API biasanya mencantumkan media type yang didukung. Nilai yang umum mencakup application/json, application/xml, multipart/form-data, dan application/x-www-form-urlencoded.

Isi body harus sesuai dengan Content-Type yang dideklarasikan. Mengirim teks biasa dengan Content-Type: application/json akan gagal karena server mencoba mengurai body tersebut sebagai JSON. Sebagian server bersikap ketat terhadap penulisan charset: charset=UTF8 alih-alih charset=UTF-8 memicu penolakan pada platform tertentu.

Periksa header Content-Encoding saat mengirim data terkompresi. Ketidakcocokan antara encoding yang dideklarasikan (misalnya gzip) dan format kompresi body yang sebenarnya menghasilkan 415.

Untuk unggahan berkas, pastikan tipe berkas ada dalam daftar izin server. Server sering membatasi unggahan pada format tertentu seperti JPEG, PNG, atau PDF.

Kesalahan umum pada klien REST API:

Menguji permintaan dengan alat seperti Postman atau curl membantu mengisolasi apakah masalahnya ada pada kode aplikasi atau pada permintaan itu sendiri. Postman menyetel header Content-Type secara otomatis ketika sebuah tipe body dipilih.

Referensi kode

.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