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个字符上有限制。
是。 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请求的屏幕截图(隐藏我出于安全考虑而尝试的端点):
响应
解决scheme非常简单阅读https://blogs.msdn.microsoft.com/amyd/2014/02/06/response-400-bad-request-on-long-url/
改变后你必须重新启动(非常重要!!!!)