Berapa panjang maksimum permintaan GET HTTP ?
Apakah ada kesalahan respons yang ditetapkan bahwa server dapat / harus kembali jika menerima permintaan GET yang melebihi panjang ini?
Ini dalam konteks API layanan web, meskipun menarik untuk melihat batas peramban juga.
web-services
http
Mark Harrison
sumber
sumber
Jawaban:
Batasnya tergantung pada server dan klien yang digunakan (dan jika berlaku, juga proxy yang digunakan server atau klien).
Sebagian besar server web memiliki batas 8192 byte (8 KB), yang biasanya dapat dikonfigurasi di suatu tempat di konfigurasi server. Mengenai masalah sisi klien, spesifikasi HTTP 1.1 bahkan memperingatkan tentang hal ini. Berikut kutipan dari bab 3.2.1 :
Batas di Internet Explorer dan Safari adalah sekitar 2 KB, di Opera sekitar 4 KB dan di Firefox sekitar 8 KB. Dengan demikian kita dapat berasumsi bahwa 8 KB adalah panjang maksimum yang mungkin dan bahwa 2 KB adalah panjang yang lebih terjangkau untuk diandalkan di sisi server dan bahwa 255 byte adalah panjang teraman untuk mengasumsikan bahwa seluruh URL akan masuk.
Jika batas terlampaui di browser atau server, sebagian besar hanya akan memotong karakter di luar batas tanpa peringatan. Namun beberapa server dapat mengirim kesalahan HTTP 414 . Jika Anda perlu mengirim data besar, lebih baik gunakan POST daripada GET. Batasnya jauh lebih tinggi, tetapi lebih tergantung pada server yang digunakan daripada klien. Biasanya hingga sekitar 2 GB diizinkan oleh server web rata-rata. Ini juga dapat dikonfigurasi di suatu tempat di pengaturan server. Server rata-rata akan menampilkan kesalahan / pengecualian khusus server ketika batas POST terlampaui, biasanya sebagai kesalahan HTTP 500.
sumber
Anda mengajukan dua pertanyaan terpisah di sini:
Seperti yang telah disebutkan, HTTP itu sendiri tidak memaksakan batasan hard-coded pada panjang permintaan; tetapi browser memiliki batas mulai dari 2 KB - 8 KB (255 byte jika kami menghitung browser yang sangat lama ).
Itu yang tidak ada yang menjawab.
HTTP 1.1 mendefinisikan kode status
414 Request-URI Too Long
untuk kasus-kasus di mana batas yang ditentukan server tercapai. Anda dapat melihat detail lebih lanjut tentang RFC 2616 .Untuk batasan yang ditentukan klien, tidak ada gunanya server mengembalikan sesuatu, karena server tidak akan menerima permintaan sama sekali.
sumber
Batas browser adalah:
Ingin lebih? Lihat pertanyaan ini di Stack Overflow .
sumber
Pertanyaan serupa ada di sini: Apakah ada batasan untuk panjang permintaan GET?
Saya telah mencapai batas dan pada akun hosting bersama saya, tetapi browser mengembalikan halaman kosong sebelum sampai ke server saya pikir.
sumber
Secara teknis, saya telah melihat HTTP GET akan memiliki masalah jika panjang URL melampaui 2000 karakter. Dalam hal ini, lebih baik menggunakan HTTP POST atau membagi URL.
sumber
Seperti yang telah disebutkan, HTTP itu sendiri tidak memaksakan batasan hard-kode pada panjang permintaan; tetapi browser memiliki batasan mulai dari 2048 karakter yang diizinkan dalam metode GET.
sumber
Iya. Tidak ada batasan pada permintaan GET.
Saya dapat mengirim ~ 4000 karakter sebagai bagian dari string kueri menggunakan browser Chrome dan perintah curl.
Saya menggunakan server Tomcat 8.x yang telah mengembalikan respons 200 OK yang diharapkan.
Ini adalah tangkapan layar dari permintaan HTTP Google Chrome (menyembunyikan titik akhir yang saya coba karena alasan keamanan):
TANGGAPAN
sumber