关于http get:GET请求的长度是否有限制?

Is there a limit to the length of a GET request?

本问题已经有最佳答案,请猛点这里访问。

GET请求的长度是否有限制?


不在RFC中,不,但有实际限制。

HTTP协议不对其长度设置任何先验限制
一个URI。服务器必须能够处理它们的任何资源的URI
服务,并且应该能够处理无限长度的URI
提供可以生成此类URI的基于GET的表单。一台服务器
如果URI更长,应该返回414(Request-URI Too Long)状态
比服务器可以处理的(参见第10.4.15节)。

注意:服务器应该谨慎依赖URI长度
超过255个字节,因为一些较旧的客户端或代理实现
可能无法正确支持这些长度。


这篇文章总结得很好

简介:它依赖于实现,因为RFC中没有指定的限制。使用多达2000个字符(IE的限制)是安全的。如果你在接近这个长度的任何地方,你应该确保你真的需要那么长的URI,也许一个替代设计可以解决这个问题。

即使用于发送数据,URI也应该是可读的。


正如用户Erickson所要求,我发表我的评论作为答案:

我已经在IE8,IE9,FF14,Opera11,Chrome20和Tomcat 6.0.32(全新安装),服务器端的Jersey 1.13上做了一些测试。我使用了jQuery函数$ .getJson和JSONP。结果:所有浏览器允许最多5400个字符。 FF和IE9最多可以达到6200个字符。以上所有内容均返回"400 Bad request"。我没有进一步调查是什么导致400.我找到的最大值我很好,因为在我的情况下我需要大约2000个字符。


规范不限制HTTP Get请求的长度,但不同的浏览器实现它们自己的限制。例如,Internet Explorer具有以2083个字符实现的限制。


W3C毫不含糊地否认这是一个神话

http://www.w3.org/2001/tag/doc/get7#myths


带有contentLength参数的setFixedLengthStreamingMode(int)可以设置HTTP请求主体的固定长度。