GET请求的长度是否有限制?
答案 0 :(得分:75)
不在RFC,不,但有实际限制。
HTTP协议不对其长度设置任何先验限制 一个URI。服务器必须能够处理它们的任何资源的URI 服务,并且应该能够处理无限长度的URI 提供可以生成此类URI的基于GET的表单。一台服务器 如果URI更长,应该返回414(Request-URI Too Long)状态 服务器可以处理(见10.4.15节)。
注意:服务器应该谨慎依赖URI长度 超过255个字节,因为一些较旧的客户端或代理实现 可能无法正确支持这些长度。
答案 1 :(得分:53)
This article总结得很好
摘要:它依赖于实现,因为RFC中没有指定的限制。使用最多2000个字符(IE的限制)是安全的。如果你在接近这个长度的任何地方,你应该确保你真的需要那么长的URI,也许替代设计可以解决这个问题。
URI应该是可读的,即使用于发送数据也是如此。
答案 2 :(得分:18)
如用户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个字符。
答案 3 :(得分:17)
规范不限制HTTP Get请求的长度,但不同的浏览器实现了自己的限制。例如,Internet Explorer具有以2083个字符实现的限制。
答案 4 :(得分:12)
W3C毫不含糊地否认这是一个神话
答案 5 :(得分:0)
带有contentLength参数的setFixedLengthStreamingMode(int)可以设置HTTP请求主体的固定长度。