HTTP GET请求的最大长度?

什么是HTTP GET请求的最大长度? 是否有响应错误定义服务器可以/应该返回,如果它收到一个GET请求超过这个长度?

更新:如标签中所示,这是在Web服务API的上下文中,尽pipe看到浏览器限制也很有趣。

该限制取决于所使用的服务器和客户端(如果适用,也取决于服务器或客户端使用的代理)。

大多数networking服务器的限制为8192字节(8KB),通常可以在服务器configuration的某处进行configuration。 至于客户端方面,HTTP 1.1规范甚至对此提出警告,下面是第3.2.1节的摘录:

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

在MSIE和Safari中的限制约为2KB,在Opera中约为4KB,在Firefox中约为8KB。 因此,我们可以假定8KB是可能的最大长度,而2KB是在服务器端依赖的更可承受的长度,并且255个字节是假定整个URL将会进入的最安全的长度。

如果在浏览器或服务器中超出限制,则大多数情况下只会截断超出限制的字符,不会有任何警告。 但是, 某些服务器可能会发送HTTP 414错误 。 如果您需要发送大量数据,那么最好使用POST而不是GET。 它的限制高得多,但是比客户端更依赖于服务器。 一般的networking服务器通常最多可以容纳2GB左右。 这也可以在服务器设置的某处进行configuration。 当POST超出限制时,平均服务器将显示特定于服务器的错误/exception,通常为HTTP 500错误。

你在这里问两个单独的问题:

什么是HTTP GET请求的最大长度?

如前所述,HTTP本身不会对请求长度施加任何硬编码的限制; 但是浏览器在2kb – 8kb的范围内有限制(如果我们计算非常旧的浏览器,则是255字节)。

是否有响应错误定义服务器可以/应该返回,如果它收到一个GET请求超过这个长度?

这是没有人回答的。

对于达到服务器定义的限制的情况,HTTP 1.1定义了状态码414 Request-URI Too Long 。 你可以在RFC 2616上看到进一步的细节。

对于客户端定义的限制,服务器没有任何意义,因为服务器根本不会收到请求。

希望这可以帮助。

类似的问题在这里: GET请求的长度是否有限制?

我已经达到了极限,并在我的共享主机帐户,但浏览器返回一个空白页之前,它到达了我认为的服务器。

从技术上讲,如果URL长度超过了2000个字符,我已经看到HttpGet会有问题。 在这种情况下,最好使用HttpPost或分割URL。

如前所述,HTTP本身不会对请求长度施加任何硬编码的限制; 但浏览器在get方法中允许的2048个字符上有限制。

使用Chrome浏览器获取请求 是。 GET请求没有限制。

 I am able to send ~4000 characters as part of the query string using chrome browser & curl command both. 

我正在使用已经返回预期的200 OK响应的Tomcat 8.x服务器。

这里是chrome http请求的屏幕截图(隐藏我出于安全考虑而尝试的端点):

响应 GET使用铬浏览器

解决scheme非常简单阅读https://blogs.msdn.microsoft.com/amyd/2014/02/06/response-400-bad-request-on-long-url/

改变后你必须重新启动(非常重要!!!!)