it-swarm.cn

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

它是可配置的吗?我是否可以设置Tomcat,以使带有200K查询参数的URL成功通过包含的servlet?

是的,我知道当您有大量数据时,应该使用POST 。

42
Michael Gundlach

您可以编辑Tomcat/conf/server.xml的HTTP/1.1连接器条目,并添加maxHttpHeaderSize =“ 65536”,以将默认最大值从8K左右增加到64K。我想您可以将这个数字提高到必要的水平,但是目前64K可以满足我的需求,所以我还没有尝试过。

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

HTTP GET请求的长度[RFC2616并未强制执行,因为Microsoft报告其 IE最大长度支持页面

因此,最大GET长度是与客户端(浏览器)相关的问题。如果您的应用被人们使用,则可以强制使用给定的浏览器,然后您只需找到该浏览器支持的长度即可。

在每种情况下,我都建议在 Wikypedia 页面上查找有关查询字符串上那些与浏览器相关的问题的信息(请求中为服务器端应用程序带来参数的部分,“?”后面的部分最终出现在一个要求。

当然,也许Tomcat也会在服务器端设置限制。 RFC说:

服务器必须能够处理它们服务的任何资源的URI,并且如果它们提供可以生成此类URI的基于GET的形式,则应当能够处理无限长度的URI。如果URI的长度超出服务器的处理能力,则服务器应返回414(请求URI太长)状态(请参见10.4.15节)。

因此,您可以轻松地测试Tomcat是否有限制,并简单地使用不同的请求找出此限制是什么,从一个很长的请求开始,直到出现错误,然后再减少一半。然后使用二等分法快速找到确切值。

6
drAlberT

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

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

您可以在Tomcat服务器(..\Tomcat 6.0\conf\server.xml)上更改配置。

<连接器端口=“ 8983” maxHttpHeaderSize =“ 100000”协议=“ HTTP/1.1” connectionTimeout =“ 20000” redirectPort =“ 8443” />

1
Thalaiselvam