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

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

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

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

注意:服务器应该谨慎使用高于255字节的URI长度,因为一些较旧的客户端或代理实现可能不能正确支持这些长度。

这篇文章总结得很好

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

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

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

由用户Erickson请求,我张贴我的评论作为答复:

我已经在服务器端使用IE8,IE9,FF14,Opera11,Chrome20和Tomcat 6.0.32(全新安装),Jersey 1.13进行了更多的testing。 我使用了jQuery函数$ .getJson和JSONP。 结果:所有浏览器允许高达约5400个字符。 FF和IE9达到了约6200个字符。 上面的一切都返回了“400错误的请求”。 我没有进一步调查什么是400的责任。我发现最大的罚款,因为我需要约2000字符在我的情况。

W3C毫不含糊地宣称这是一个神话

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

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