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

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

这是在web服务API的上下文中,尽管浏览器的限制也很有趣。


当前回答

浏览器限制如下:

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

想要更多吗?参见Stack Overflow上的这个问题。

其他回答

浏览器限制如下:

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

想要更多吗?参见Stack Overflow上的这个问题。

是的。GET请求没有任何限制。

我能够发送~4000字符作为查询字符串的一部分使用Chrome浏览器和curl命令。

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

以下是谷歌Chrome HTTP请求的截图(由于安全原因,隐藏了我尝试的端点):

响应

如前所述,HTTP本身对请求长度没有任何硬编码限制;但是浏览器对GET方法中允许的2048个字符有限制。

从技术上讲,我曾见过如果URL长度超过2000个字符,HTTP GET就会出现问题。在这种情况下,最好使用HTTP POST或分割URL。

你在问两个不同的问题:

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

如前所述,HTTP本身对请求长度没有任何硬编码限制;但是浏览器限制在2kb - 8kb(如果我们计算非常老的浏览器,则为255字节)。

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

这个问题还没人回答。

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

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