151

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

4

6 回答 6

78

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

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

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

于 2008-11-05T19:43:56.480 回答
55

这篇文章总结的很好

摘要:它依赖于实现,因为 RFC 中没有指定限制。最多使用 2000 个字符(IE 的限制)是安全的。如果您接近这个长度,您应该确保您确实需要这么长的 URI,也许另一种设计可以解决这个问题。

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

于 2008-11-05T19:44:53.637 回答
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 个字符。

于 2013-07-14T01:38:17.523 回答
17

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

于 2008-11-05T19:46:29.610 回答
12

W3C 明确否认这是一个神话

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

于 2011-12-09T16:59:48.027 回答
1

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

于 2012-01-05T16:41:25.313 回答