HTTPQUERY
Bahasa Indonesia

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