414 URI Too Long
Penggunaan
Ketika pesan error 414 URI Too Long diterima, klien memahami bahwa server mengharapkan path atau alamat HTTP yang lebih pendek. Meskipun spesifikasi tidak menetapkan persyaratan apa pun mengenai panjangnya, dalam praktiknya browser membatasi ukurannya untuk mencegah jenis serangan tertentu.
Server, reverse proxy, dan framework masing-masing menerapkan batas panjang URI tersendiri. Nilai default yang umum berkisar antara 4 KB hingga 8 KB, meskipun tidak ada spesifikasi yang mendefinisikan nilai maksimum.
Response 414 URI Too Long dapat disimpan dalam cache secara default.
Dampak SEO
Mesin pencari seperti Google tidak akan mengindeks URL dengan status response 414. URL yang sebelumnya terindeks akan dihapus dari hasil pencarian.
Contoh
Klien meminta sebuah sumber daya menggunakan URI yang melampaui batas yang diizinkan server.
Permintaan
GET /<...a_long_URI...> HTTP/1.1
Host: example.com
Response
HTTP/1.1 414 URI Too Long
Cara memperbaiki
Penyebab paling umum adalah permintaan GET dengan terlalu banyak parameter kueri atau nilai yang sangat panjang yang dikodekan di dalam URL. Loop redirect atau aturan rewrite yang salah konfigurasi sehingga menambahkan parameter pada setiap siklus juga memicu error ini.
Perbaikan di sisi klien:
nginx: Naikkan large_client_header_buffers agar baris permintaan yang lebih panjang dapat diterima. Direktif ini mengambil dua nilai: jumlah buffer dan ukuran buffer, misalnya large_client_header_buffers 4 32k. Mulai ulang nginx agar berlaku.
Apache: Setel LimitRequestLine di httpd.conf ke nilai byte yang lebih besar. Nilai defaultnya adalah 8190 byte. Nilai hingga 128000 umum digunakan untuk aplikasi dengan URL yang panjang. Mulai ulang Apache setelah perubahan.
IIS: Ubah maxUrl dan maxQueryString pada file web.config di bawah system.webServer > security > requestFiltering > requestLimits. Nilai defaultnya adalah 4096 byte untuk panjang URL dan 2048 byte untuk query string. Jaga nilai-nilai ini serendah mungkin selama masih praktis. Batas URL yang besar meningkatkan risiko terhadap serangan injeksi.
Ketika error ini muncul di browser alih-alih pada sebuah API, membersihkan cache browser dan Cookie kadang menyelesaikan masalah, terutama ketika cookie yang usang membuat ukuran header permintaan membengkak melampaui batas server.
Referensi kode
.NET
HttpStatusCode.RequestUriTooLong
Rust
http::StatusCode::URI_TOO_LONG
Rails
:uri_too_long
:request_uri_too_long
Go
http.StatusRequestURITooLong
Symfony
Response::HTTP_REQUEST_URI_TOO_LONG
Python3.5+
http.HTTPStatus.REQUEST_URI_TOO_LONG
Java
java.net.HttpURLConnection.HTTP_REQ_TOO_LONG
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_REQUEST_URI_TOO_LONG
Angular
@angular/common/http/HttpStatusCode.UriTooLong