GET 请求的长度有限制吗?

GET 请求的长度有限制吗?

221741 次浏览

RFC里没有,但是有实际的限制。

HTTP 协议没有对 服务器必须能够处理任何资源的 URI 应该能够处理无限长的 URI,如果它们 提供可以生成这种 URI 的基于 GET 的表单 如果 URI 更长,应该返回414(Request-URI Too Long)状态 超出服务器可以处理的范围(参见第10.4.15节)

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

该规范没有限制 HTTPGet 请求的长度,但是不同的浏览器实现了它们自己的限制。例如,Internet Explorer 的限制是2083个字符。

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

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

SetFixedLengthStreamingMode (int)和 contentLlength 参数可以设置 HTTP 请求体的固定长度。

根据用户 Erickson 的要求,我将我的评论作为回复:

我在服务器端用 IE8、 IE9、 FF14、 Opera11、 Chrome20和 Tomcat 6.0.32(新安装)、 Jersey 1.13做了更多的测试。我使用了 jQuery 函数 $。GetJson 和 JSONP。结果: 所有浏览器最多允许5400个字符。FF 和 IE9最多可以处理6200个字符。上面的一切都返回“400坏请求”。我没有进一步调查是什么造成了这400人。我可以接受我找到的最大值,因为我需要大约2000个字符在我的情况下。