Tomcat中的最大URL长度是多less?

它是可configuration的吗? 我可以设置Tomcat,以便具有200K查询参数的URL成功通过所包含的servlet吗?

是的,我知道你有很多数据时应该使用POST; 在这种情况下,这是一个不太愉快的select。 包含的应用程序(search引擎)需要GET请求来执行search。

您可以编辑tomcat / conf / server.xml的HTTP / 1.1连接器条目,并添加一个maxHttpHeaderSize =“65536”,从默认最大值8K增加到64K。 我想你可以把这个数字提高到必要的高度,但是64K就足够满足我的需要了,所以我还没有尝试过。

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

由于Microsoft报告其IE最大长度支持页面 ,所以HTTP GET请求的长度不受RFC2616的强制执行

所以, 最大GET长度是一个客户端(浏览器)相关的问题 。 如果您的应用程序被人使用,您可以强制使用给定的浏览器,那么您可以简单地find这个浏览器支持的长度。

在任何情况下,我都build议您查看一下Wikypedia页面上关于查询string上的那些与浏览器相关的问题(服务器端应用程序的请求部分,最后出现在请求中的“?”之后。

当然也许tomcat也会在服务器端放一个限制。 RFC说:

服务器必须能够处理它们所服务的任何资源的URI,并且如果它们提供了可以生成这种URI的基于GET的表单,那么它们应该能够处理无限长的URI。 如果一个URI长于服务器可以处理的时间(见10.4.15节),服务器应该返回414(Request-URI太长)状态。

所以你可以很容易地testingTomcat是否有限制,并且找出这个限制只是简单的使用不同的请求,从一个很长的错误开始并给出一半的错误。 然后用二分法快速find确切的值。

对于AJP连接器,您需要调整packetSize属性:

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

您可以更改Tomcat服务器上的configuration(.. \ Tomcat 6.0 \ conf \ server.xml)

<Connector port =“8983”maxHttpHeaderSize =“100000”protocol =“HTTP / 1.1”connectionTimeout =“20000”redirectPort =“8443”/>