431 Request Header Fields Too Large
Penggunaan
Kode status 431 Request Header Fields Too Large menunjukkan bahwa server menolak memproses permintaan HTTP karena data yang ditentukan oleh header HTTP terlalu banyak.
Bergantung pada servernya, hal ini merujuk pada total panjang seluruh header HTTP digabung atau pada header tertentu saja. Dalam kedua kasus tersebut, klien memiliki opsi untuk menghapus satu atau beberapa header HTTP lalu mencoba permintaan itu kembali. Salah satu solusi yang mungkin untuk membatasi jumlah header HTTP adalah memangkas atau mengurangi Cookie yang dikirimkan.
Dampak SEO
Mesin pencari seperti Google tidak akan mengindeks URL dengan status respons 431. URL yang sebelumnya terindeks namun mengembalikan kode status ini akan dihapus dari hasil pencarian.
Contoh
Klien meminta sebuah sumber daya dan server merespons dengan 431 Request Header Fields Too Large karena gabungan dua nilai cookie yang besar melampaui batas maksimum yang ditetapkan server untuk header HTTP.
Permintaan
GET /tech-news HTTP/1.1
Host: example.com
Cookie: first_cookie=<very_long>; second_cookie=<long_again>
Respons
HTTP/1.1 431 Request Header Fields Too Large
Content-Type: text/html
Content-Length: 183
<html>
<head>
<title>Request Headers Too Long</title>
</head>
<body>
<p>The request headers are too long.
Try retrying without cookies.</p>
</body>
</html>
Cara memperbaiki
Bersihkan Cookie untuk domain terkait di browser. Penumpukan cookie adalah penyebab yang paling sering terjadi. Skrip pihak ketiga, tag analitik, dan pixel pemasaran menetapkan cookie pada setiap kunjungan, dan ukuran gabungannya pada akhirnya melampaui batas server. Bersihkan cookie khusus situs tersebut terlebih dahulu sebelum menghapus seluruh cookie browser.
Kurangi nilai header kustom yang dikirim bersama permintaan. Token otorisasi yang panjang, header X-Custom-* yang berukuran berlebihan, dan parameter query ter-URL-encode yang disematkan di dalam header semuanya menambah total ukurannya.
Di sisi server, naikkan batas buffer header:
Audit penggunaan cookie di seluruh situs. Batasi jumlah cookie yang ditetapkan per domain dan gunakan atribut SameSite, Path, serta Domain untuk mencegah cookie merambat ke subdomain dan path yang tidak membutuhkannya. Pindahkan data sesi ke penyimpanan di sisi server atau ke localStorage ketika data tersebut tidak perlu ikut dikirim pada setiap permintaan.
Menaikkan batas server di atas 32 KB memunculkan risiko denial-of-service. Naikkan batas hanya secukupnya untuk menampung trafik yang sah, dan sertai perubahan tersebut dengan pemantauan ukuran permintaan.
Chrome dan error 431
Chrome menampilkan “Bad Request - Request Header Field Too Long” atau “Bad message 431” ketika Cookie yang menumpuk untuk sebuah domain mendorong header permintaan melewati batas server. Membersihkan Cookie untuk situs tertentu melalui pengaturan Chrome (Settings > Privacy > Cookies > See all site data) langsung mengatasi error tersebut tanpa memengaruhi situs lain.
Referensi kode
.NET
HttpStatusCode.RequestHeaderFieldsTooLarge
Rust
http::StatusCode::REQUEST_HEADER_FIELDS_TOO_LARGE
Rails
:request_header_fields_too_large
Go
http.StatusRequestHeaderFieldsTooLarge
Symfony
Response::HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE
Python3.5+
http.HTTPStatus.REQUEST_HEADER_FIELDS_TOO_LARGE
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_REQUEST_HEADER_FIELDS_TOO_LARGE
Angular
@angular/common/http/HttpStatusCode.RequestHeaderFieldsTooLarge