it-swarm.asia

Tomcat'teki maksimum URL uzunluğu nedir?

Ve yapılandırılabilir mi? Tomcat'i, örneğin 200K sorgu parametrelerine sahip bir URL'nin içerdiği sunucu uygulamasına başarıyla geçmesini sağlayacak şekilde ayarlayabilir miyim?

Evet, bir çok veri olduğunda bir POST kullanmanız gerektiğini biliyorum; bu özel bir durumda bu daha az hoş bir seçenek. .

42
Michael Gundlach

Tomcat/conf/server.xml'nin HTTP/1.1 Bağlayıcı girişini düzenleyebilir ve varsayılan maksimum 8K'dan 64K'ya çıkarmak için bir maxHttpHeaderSize = "65536" ekleyebilirsiniz. Bu sayıyı gerektiği kadar yükseltebileceğinizi düşünüyorum, ancak 64K şu anda ihtiyaçlarım için yeterli, bu yüzden denemedim.

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

Bir HTTP GET isteğinin uzunluğu , Microsoft'un IE maksimum uzunluk destek sayfası için bildirdiği gibi RFC2616 tarafından zorlanmaz.

Yani, maksimum GET uzunluğu istemci (tarayıcı) ile ilgili bir sorundur . Uygulamanız insanlar tarafından kullanılıyorsa, belirli bir tarayıcıyı kullanmaya zorlayabilirsiniz, o zaman bu tarayıcının desteklediği uzunluğu bulabilirsiniz.

Her durumda, Sorgu dizesindeki tarayıcı ile ilgili sorunlar hakkında Wikypedia sayfasına bir göz atmanızı öneririm (isteğin sunucu tarafı uygulamaları için parametre getiren isteğin parçası, sonunda "?" bir istek.

Tabii ki Tomcat sunucu tarafına da bir sınır koyacaktır. RFC diyor ki:

Sunucular, hizmet ettikleri herhangi bir kaynağın URI'sini işleyebilmelidir ZORUNLU ve bu URI'leri oluşturabilecek GET tabanlı formlar sağlarlarsa sınırsız uzunlukta URI'leri işleyebilmelidir. Bir URI, sunucunun işleyebileceğinden daha uzunsa, bir sunucu 414 (İstek-URI Çok Uzun) durumuna dönmelidir (bkz. Bölüm 10.4.15).

böylece Tomcat'in bir sınırı olup olmadığını kolayca test edebilir ve bu sınırın ne olduğunu, sadece çok uzun bir hata ile başlayan ve yarı yarıya azalan farklı istekleri kullanarak öğrenebilirsiniz. Sonra kesin değeri bulmak için ikiye ayırma yöntemini kullanın.

6
drAlberT

AJP bağlayıcısı için packetSize niteliğini ayarlamanız gerekir:

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

Tomcat sunucusunda yapılandırmayı değiştirebilirsiniz (..\Tomcat 6.0\conf\server.xml)

<Bağlayıcı bağlantı noktası = "8983" maxHttpHeaderSize = "100000" protokolü = "HTTP/1.1" connectionTimeout = "20000" redirectPort = "8443" />

1
Thalaiselvam