411 Length Required
Penggunaan
Ketika pesan kesalahan 411 Length Required diterima, permintaan harus dikirim ulang dengan menyertakan header Content-Length. Permintaan HTTP umumnya menggunakan header ini untuk menyatakan panjang badan pesan, meskipun tidak selalu. Sebagai contoh, ketika field header Transfer-Encoding disertakan dan disetel ke chunked, field header Content-Length tidak diperlukan.
Jika klien sedang mengirim aliran data dan status ini dikembalikan, data tersebut harus dikirim dalam blok-blok dengan ukuran yang dinyatakan.
Dampak SEO
Mesin pencari seperti Google tidak akan mengindeks URL dengan status respons 411 Length Required. URL yang sebelumnya terindeks akan dihapus dari hasil pencarian. Halaman yang mengembalikan kode ini tidak memboroskan anggaran perayapan.
Contoh
Klien mencoba mengirim sebuah berkas, tetapi server menolak permintaan tersebut dengan 411 Length Required karena panjang badan pesan tidak dinyatakan.
Permintaan
PUT /docs HTTP/1.1
Host: example.com
Content-Type: application/pdf
<PDF file included as message body>
Respons
HTTP/1.1 411 Length Required
Cara memperbaiki
Tambahkan header Content-Length dengan jumlah byte yang tepat dari badan permintaan. Sebagian besar pustaka klien HTTP menghitung nilai ini secara otomatis saat mengirim string atau buffer. Pastikan pustaka tersebut tidak menghapus header itu atau menyetel nilainya menjadi nol.
Ketika permintaan menggunakan Transfer-Encoding chunked, berarti server target tidak menerima badan chunked. Buffer dahulu seluruh payload, ukur panjangnya dalam byte, lalu kirim badan tersebut dengan header Content-Length.
Proxy dan firewall terkadang menghapus atau mengubah header saat transit. Jika klien mengirim Content-Length dengan benar tetapi server tetap mengembalikan 411, periksa permintaan tersebut di sisi server untuk memastikan header itu tiba dalam keadaan utuh.
Pada curl, flag -d menyetel Content-Length secara otomatis. Untuk Transfer-Encoding: chunked dengan curl, gunakan -H “Transfer-Encoding: chunked”, tetapi hanya bila server mendukung transfer chunked.
Di sisi server, status ini kerap dikembalikan oleh konfigurasi yang ketat atau server HTTP/1.0 lama yang tidak mendukung pengodean chunked. Administrator server menetapkan kebijakan ini secara sengaja, dan perbaikannya selalu ada di sisi klien.
411 pada perkakas pengujian API
Perkakas seperti Postman dan curl menangani header Content-Length secara otomatis untuk sebagian besar jenis permintaan. Kesalahan 411 di Postman umumnya terjadi saat mengirim badan kosong pada permintaan POST atau PUT tanpa memilih tipe badan. Memilih format badan (raw, form-data, atau x-www-form-urlencoded) membuat Postman menyetel header Content-Length dengan benar.
Referensi kode
.NET
HttpStatusCode.LengthRequired
Rust
http::StatusCode::LENGTH_REQUIRED
Rails
:length_required
Go
http.StatusLengthRequired
Symfony
Response::HTTP_LENGTH_REQUIRED
Python3.5+
http.HTTPStatus.LENGTH_REQUIRED
Java
java.net.HttpURLConnection.HTTP_LENGTH_REQUIRED
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_LENGTH_REQUIRED
Angular
@angular/common/http/HttpStatusCode.LengthRequired