Pendahuluan

Untuk penjelasan awal mengenai HTTP Response status code, bisa lihat di sini dan di sini

Masing-masingnya mengisyaratkan Status Code response dari request yang diminta waktu melakukan pemanggilan HTTP.


HTTP Response Code 4xx ?


Untuk part 1 , bisa dilihat di sini

Disana dibahas mengenai Response Status Code :

  • 400 - Bad Request
  • 401 - Unauthorized
  • 402 - Payment Required
  • 403 - Forbidden
  • 404 - Not Found
  • 405 - Method Not Allowed

Coba kita lihat daftar HTTP Status Code 4XX sisanya



HTTP Status Code - 406 - Not Acceptable

Response Status Code 406 ini artinya Tidak ada resource yang sesuai dengan representasi/bentuk data yang diinginkan/yang bisa diterima oleh user agent, dan Server juga tidak mempunyai representasi yang standar/default.

Contohnya :

  • Misalnya kita ingin mengakses file berformat .json dan browser kita menerima format .json. Akan tetapi ternyata di sisi Server yang tersedia hanya dalam bentuk file .html saja, sehingga status code 406 dikirimkan untuk menginformasikan hal tersebut.

  • Atau misalnya kita mau mengambil file berekstension .pass di server. Dan server ternyata mempunyai konfigurasi security bahwa file .pass tidak bisa direquest oleh client, sehingga status code 406 dikirimkan.

  • dll



HTTP Status Code - 407 - Proxy Authentication Required

Response Status Code 407 ini artinya Server tidak dapat memproses HTTP Request karena kekurangan/tidak ada Kredensial untuk otentikasi ke resource yang diinginkan yang mestinya diprovide oleh HTTP Request, dan otentikasi nya itu harus dilakukan sendiri oleh client ke server proxy.

HTTP Server dalam hal ini mengirimkan status code 407 ini dengan tambahan HTTP Header Proxy Authenticate yang berisi informasi/basic challenge bagaimana cara melakukan otentikasi ke proxy server.

Jadi dalam kasus ini HTTP Client perlu melakukan otentikasi dulu ke Proxy, dengan mengirimkan HTTP Header Proxy Authenticate berisikan data otentikasi ke server proxy.

Misalnya isinya adalah Basic token, atau informasi kredensial lainnya.



HTTP Status Code - 408 - Request Timeout

Response Status Code 408 ini artinya Server ingin mengakhiri koneksi HTTP request, karena terlalu lama menunggu untuk sebuah request yang belum lengkap.

Kasus ini terjadi misalnya :

  • Di HTTP 1.0, terdapat namanya HTTP pre-connection, dimana koneksi HTTP bisa dikeep cukup lama, sehingga kalau ternyata dianggap terlalu lama, maka koneksinya bisa diputus dengan mengirimkan Status Code 408 ini.

  • Atau bisa saja lagi banyak trafik datang ke HTTP Server. Akibatnya server tidak dapat menerima lengkap sebuah request HTTP dari client.

HTTP Server akan ikut mengirimkan HTTP Header Connection dengan nilai close sebagai penanda bahwa response dari Server adalah menginginkan menutup koneksi HTTP.



HTTP Status Code - 409 - Conflict

Response Status Code 409 ini artinya HTTP Requestnya tidak bisa dilaksanakan di sisi Server, karena terdapat konflik dengan state dari resource yang ada.

Kasus ini terjadi misalnya :

  • Kita melakukan update terhadap sebuah data di database melalui HTTP PUT. Ternyata ada program lain yang juga duluan mengubah data yang sama tersebut dengan id/hash key yang baru untuk id/hash key yang sama. Akibatnya agar tetap konsisten, maka HTTP Server perlu mengirimkan Status Code 409 (Conflict) agar HTTP Client bisa memperbaiki requestnya lagi.

HTTP Server seharusnya akan mengirimkan informasi cukup lengkap di body/content mengenai apa yang menyebabkan conflict itu terjadi.



HTTP Status Code - 410 - Gone

Response Status Code 410 ini artinya Resource yang diminta oleh HTTP Client tidak ditemukan di server, dan sifatnya permanen.

Dengan response status code ini, Server berharap agar HTTP Client mengubah atau menghapus URL yang awalnya di request, karena sudah tidak ada secara permanen.

Kasus ini terjadi misalnya :

  • Kita melakukan delete nama domain, hapus url tertentu. Untuk membuat pihak lain yang mengakses domain kita yang lama, atau URL kita yang lama tahu tentang hal ini, maka dikirimkanlah Status Code 410 ini.

HTTP Status Code ini mestinya dikirimkan dalam jangka waktu tertentu saja.

Ada namanya masa notified period yang bisa digunakan sebagai waktu bagi pihak-pihak yang berkepentingan tahu bahwa sebuah resource tidak ada lagi.



HTTP Status Code - 411 - Length Required

Response Status Code 411 ini artinya Http requestnya diterima, tetapi Server menolak untuk memproses request, karena tidak ada HTTP Header “Content-Length” di HTTP request.

Kasus ini terjadi misalnya :

  • Kita melakukan koneksi HTTP secara streaming, yang melakukan transfer byte dalam bentuk potongan-potongan kecil (chunck). Dimana tiap HTTP request akan dipanggil berurutan/bersamaan, dengan tiap request mesti mengirimkan berapa banyak byte yang dia mau terima, melalui HTTP Header “Content-Length”.

  • Kita melakukan chunck download (misalnya pakai Download Manager), yang mana tiap HTTP request mesti didefinisikan HTTP Header “Content-Length” yang diinginkan oleh HTTP Client dari server.

Antara Status Code 411 (Length Required) ini bisa berhubungan dengan Status Code 206 (Partial Content).

  • Status Code 206 menginformasikan HTTP Requestnya berhasil sebagian.
  • Status Code 411 menginformasikan sebagian HTTP requestnya gagal karena tidak ada “Content-Length” di HTTP Header nya.

Kita lanjut ke Status Code 4xx - Bagian 3