HTTP GET请求的最大长度?

时间:2010-04-17 20:32:25

标签: web-services http

HTTP GET请求的最大长度是多少?是否存在定义的响应错误,如果服务器收到超过此长度的GET请求,它可以/应该返回?

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

7 个答案:

答案 0 :(得分:421)

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

大多数Web服务器的限制为8192字节(8KB),通常可在服务器配置中的某处配置。至于客户端问题,HTTP 1.1规范甚至警告过这个,这里是chapter 3.2.1的摘录:

  

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

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

如果在浏览器或服务器中超出限制,大多数人只会在没有任何警告的情况下截断限制之外的字符。 然而,某些服务器可能会发送HTTP 414 error。如果您需要发送大数据,那么最好使用POST而不是GET。它的限制更高,但更多地依赖于使用的服务器而不是客户端。通常,平均网络服务器允许高达2GB左右。这也可以在服务器设置中的某处进行配置。当超过POST限制时,平均服务器将显示特定于服务器的错误/异常,通常为HTTP 500错误。

答案 1 :(得分:136)

您在这里提出两个不同的问题:

  

HTTP GET请求的最大长度是多少?

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

  

是否定义了响应错误,如果收到GET请求的服务器超过此长度,服务器可以/应该返回?

那是没有人回答的。

HTTP 1.1为达到服务器定义的限制的情况定义了状态代码414 Request-URI Too Long。您可以在RFC 2616上看到更多详细信息。

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

希望这有帮助。

答案 2 :(得分:12)

浏览器限制为:

Browser     Address bar   document.location  
                          or anchor tag
------------------------------------------
Chrome          32779           >64k      
Android          8192           >64k                         
Firefox          >64k           >64k      
Safari           >64k           >64k      
IE11             2047           5120   
Edge 16          2047          10240

想要更多?见this question on Stack Overfollow

答案 3 :(得分:4)

类似的问题:Is there a limit to the length of a GET request?

我已达到限制并在我的共享主机帐户上,但浏览器返回到我认为的服务器之前的空白页。

答案 4 :(得分:3)

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

答案 5 :(得分:2)

如前所述,HTTP本身并未对请求长度施加任何硬编码限制;但浏览器的限制范围取决于get方法允许的2048字符。

答案 6 :(得分:-4)

GET REQUEST using chrome browser是。 GET请求没有限制。

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

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

以下是chrome http请求的屏幕截图(由于安全原因隐藏了我尝试的端点):

RESPONSE GET using chrome browser