【发布时间】:2010-09-20 22:44:10
【问题描述】:
GET 请求的长度是否有限制?
【问题讨论】:
-
这个问题已关闭,因为 SO 中有类似的问题,但另一个问题是在 2 年后提出的。因此,这不能是重复的。
-
这个问题被标记为a question asked after this question的重复是多么有趣......即使在this question之后提出了这个有更正确答案的问题
GET 请求的长度是否有限制?
【问题讨论】:
RFC中没有,没有,但有实际限制。
HTTP 协议对长度没有任何先验限制 一个 URI。服务器必须能够处理它们所使用的任何资源的 URI 服务,并且应该能够处理无限长度的 URI,如果它们 提供可以生成此类 URI 的基于 GET 的表单。一台服务器 如果 URI 较长,则应返回 414(Request-URI Too Long)状态 超出服务器的处理能力(参见第 10.4.15 节)。
注意:服务器应谨慎对待取决于 URI 长度 超过 255 个字节,因为一些较旧的客户端或代理实现 可能无法正确支持这些长度。
【讨论】:
This article总结得很好
总结:它取决于实现,因为 RFC 中没有指定限制。最多使用 2000 个字符(IE 的限制)是安全的。如果您接近这个长度,您应该确保您确实需要这么长的 URI,也许另一种设计可以解决这个问题。
URI 应该是可读的,即使在用于发送数据时也是如此。
【讨论】:
应用户 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 个字符。
【讨论】:
规范不限制 HTTP Get 请求的长度,但不同的浏览器实现了自己的限制。例如,Internet Explorer 的限制是 2083 个字符。
【讨论】:
W3C 在这里明确否认这是一个神话
【讨论】:
带 contentLength 参数的 setFixedLengthStreamingMode(int) 可以设置 HTTP 请求正文的固定长度。
【讨论】: