GET 请求的长度有限制吗?
在 RFC里没有,但是有实际的限制。
HTTP 协议没有对 服务器必须能够处理任何资源的 URI 应该能够处理无限长的 URI,如果它们 提供可以生成这种 URI 的基于 GET 的表单 如果 URI 更长,应该返回414(Request-URI Too Long)状态 超出服务器可以处理的范围(参见第10.4.15节) 注意: 服务器应该注意不要依赖 URI 长度 超过255字节,因为一些较旧的客户端或代理实现 可能无法正确支持这些长度
注意: 服务器应该注意不要依赖 URI 长度 超过255字节,因为一些较旧的客户端或代理实现 可能无法正确支持这些长度
这篇文章总结得很好
摘要: 这取决于实现,因为 RFC 中没有指定的限制。最多使用2000个字符是安全的(IE 的限制)如果您接近这个长度,那么您应该确保您真的需要这么长的 URI,也许其他的设计可以解决这个问题。
URI 应该是可读的,即使在用于发送数据时也是如此。
该规范没有限制 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个字符在我的情况下。