pengembangan-web-mp.com

Berapa panjang maksimum URL di Tomcat?

Dan apakah ini dapat dikonfigurasi? Dapatkah saya mengatur Tomcat sehingga URL dengan, katakanlah, 200K params kueri berhasil melewati servlet yang terkandung?

Ya, saya tahu seseorang harus menggunakan POST ketika Anda memiliki banyak data; itu pilihan yang kurang menyenangkan dalam kasus khusus ini. Aplikasi yang terkandung (mesin pencari) mengharapkan permintaan GET untuk melakukan pencarian .

42
Michael Gundlach

Anda dapat mengedit entri Konektor HTTP/1.1 Tomcat/conf/server.xml, dan menambahkan maxHttpHeaderSize = "65536" untuk meningkat dari maksimum default 8K atau lebih, menjadi 64K. Saya membayangkan bahwa Anda dapat menaikkan angka ini setinggi yang diperlukan, tetapi 64K cukup untuk kebutuhan saya saat ini sehingga saya belum mencobanya.

<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />
59
Michael Gundlach

Panjang permintaan HTTP GET tidak dipaksakan oleh RFC2616 , seperti yang dilaporkan Microsoft untuk halaman dukungan panjang IE max .

Jadi, panjang GET maksimum adalah masalah terkait klien (browser) . Jika aplikasi Anda digunakan oleh orang-orang yang dapat Anda paksa untuk menggunakan browser yang diberikan maka Anda hanya dapat menemukan berapa lama dukungan browser ini.

Dalam setiap kasus, saya sarankan untuk melihat halaman Wikypedia tentang masalah-masalah terkait browser pada string Kueri (bagian dari permintaan yang membawa parameter untuk aplikasi sisi server, yang mengikuti "?" Akhirnya hadir di permintaan.

Tentu saja mungkin Tomcat akan memberikan batasan juga, di sisi server. RFC mengatakan:

Server HARUS dapat menangani URI dari sumber daya apa pun yang mereka layani, dan HARUS menangani URI dengan panjang yang tidak terbatas jika menyediakan bentuk berbasis GET yang dapat menghasilkan URI tersebut. Server HARUS mengembalikan status 414 (Permintaan-URI Terlalu Panjang) jika URI lebih panjang daripada yang bisa ditangani server (lihat bagian 10.4.15).

jadi Anda dapat dengan mudah menguji apakah Tomcat memiliki batas dan mencari tahu apa batas ini hanya menggunakan permintaan yang berbeda dimulai dengan permintaan yang sangat panjang memberikan kesalahan dan turun setengahnya. Kemudian gunakan metode membagi dua untuk dengan cepat menemukan nilai yang tepat.

6
drAlberT

Untuk konektor AJP, Anda perlu menyesuaikan atribut packetSize:

<Connector port="8009" 
    protocol="AJP/1.3" 
    packetSize="65536" />
2
1615903

Anda dapat mengubah konfigurasi di server Tomcat (..\Tomcat 6.0\conf\server.xml)

<Konektor port = "8983" maxHttpHeaderSize = "100000" protokol = "HTTP/1.1" connectionTimeout = "20000" redirectPort = "8443" />

1
Thalaiselvam