Answers:
您可以编辑tomcat / conf / server.xml的HTTP / 1.1连接器条目,并添加maxHttpHeaderSize =“ 65536”,以将默认最大值从8K左右增加到64K。我想您可以将这个数字提高到必要的水平,但目前64K足以满足我的需求,因此我没有尝试过。
<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />
RFC2616并未规定 HTTP GET请求的长度,因为Microsoft报告了其IE最大长度支持页面。
因此,最大GET长度是与客户端(浏览器)相关的问题。如果您的应用被人们使用,则可以强制使用给定的浏览器,然后您只需找到该浏览器支持的长度即可。
在每种情况下,我都建议您浏览一下Wikypedia页面,以了解查询字符串上与浏览器相关的问题(请求中为服务器端应用程序带来参数的部分,请求中最终出现“?”的部分)。
当然,也许tomcat也会在服务器端设置限制。RFC说:
服务器必须能够处理它们所服务的任何资源的URI,并且如果服务器提供可以生成此类URI的基于GET的形式,则应当能够处理无限长度的URI。如果URI的长度超过服务器的处理能力,则服务器应返回414(请求URI太长)状态(请参见10.4.15节)。
因此,您可以轻松地测试Tomcat是否有限制,并简单地使用不同的请求找出此限制是什么,从一个很长的请求开始,直到出现错误,然后再减少一半。然后使用二等分法快速找到确切值。
您可以在Tomcat服务器(.. \ Tomcat 6.0 \ conf \ server.xml)上更改配置。
<连接器端口=“ 8983” maxHttpHeaderSize =“ 100000”协议=“ HTTP / 1.1” connectionTimeout =“ 20000” redirectPort =“ 8443” />
server.xml
配置中刮擦默认的8192限制时,没有注意到,然后突然击中它。痛苦的陷阱:没有任何记录,连接被静默删除(我不再记得HTTP状态了)。之前,我在tomcat.apache.org/tomcat-5.5-doc/config/http.html上偶然浏览了该文档,但是我也没有将maxHttpHeaderSize
其名称或描述与GET请求查询参数本身相关联。