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.
server.xml
konfigurasi, tanpa memperhatikan, dan tiba-tiba menabraknya. Gotcha yang menyakitkan: tidak ada yang dicatat tentang hal itu, koneksi terputus secara diam-diam (saya tidak ingat Status HTTP lagi). Saya sengaja menemukan dokumentasi di tomcat.apache.org/tomcat-5.5-doc/config/http.html sebelumnya, namun saya tidak mengaitkannyamaxHttpHeaderSize
dengan namanya atau deskripsinya yang terkait dengan parameter permintaan kueri GET sendiri.Panjang permintaan HTTP GET tidak diberlakukan oleh RFC2616 , karena Microsoft melaporkan untuk halaman dukungan panjang maks IE .
Jadi, panjang GET maksimum adalah masalah yang terkait dengan 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 melihat ke halaman Wikypedia tentang masalah-masalah yang terkait dengan browser pada string Kueri (bagian dari permintaan yang membawa parameter untuk aplikasi sisi server, yang mengikuti "?" Akhirnya hadir dalam permintaan.
Tentu saja mungkin kucing jantan akan memberikan batasan juga, di sisi server. RFC mengatakan:
sehingga 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 lama memberikan kesalahan dan turun setengahnya. Kemudian gunakan metode membagi dua untuk dengan cepat menemukan nilai yang tepat.
sumber
Untuk konektor AJP, Anda perlu menyesuaikan
packetSize
atribut:sumber
ProxyIOBufferSize 65536
konfigurasi httpd Anda juga.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" />
sumber