HTTP 得到请求的最大长度是多少?
如果服务器接收到超过这个长度的GET请求,是否定义了服务器可以/应该返回的响应错误?
这是在web服务API的上下文中,尽管浏览器的限制也很有趣。
这里有一个类似的问题: GET请求的长度有限制吗?< / >
我已经在我的共享托管帐户上达到了限制,但是浏览器在到达服务器之前返回了一个空白页。
限制取决于所使用的服务器和客户端(如果适用,还取决于服务器或客户端使用的代理)。
大多数web服务器都有8192字节(8kb)的限制,这通常是在服务器配置的某个地方配置的。至于客户端问题,HTTP 1.1规范甚至对此发出了警告。以下是3.2.1章的摘录:
注意:服务器应该谨慎依赖于超过255字节的URI长度,因为一些旧的客户端或代理实现可能不正确地支持这些长度。
Internet Explorer和Safari的限制约为2 KB, Opera约为4 KB, Firefox约为8 KB。因此,我们可以假设8 KB是可能的最大长度,2 KB是服务器端更负担得起的长度,255字节是假设整个URL将进入的最安全的长度。
如果在浏览器或服务器中超过了限制,大多数将截断超出限制的字符而不发出任何警告。一些服务器可能发送HTTP 414错误。
如果您需要发送大型数据,那么最好使用POST而不是GET。它的限制是多,但更依赖于所使用的服务器而不是客户端。一般情况下,web服务器最多允许2gb的内存。
这也可以在服务器设置中进行配置。当超过POST限制时,普通服务器将显示特定于服务器的错误/异常,通常是HTTP 500错误。
你在问两个不同的问题:
HTTP GET请求的最大长度是多少?
如前所述,HTTP本身对请求长度没有任何硬编码限制;但是浏览器限制在2 KB - 8 KB(255字节如果我们算上非常古老的浏览器)。
是否定义了一个响应错误,如果服务器接收到一个超过这个长度的GET请求,服务器可以/应该返回该错误?
这个问题还没人回答。
HTTP 1.1为达到服务器定义的限制的情况定义了状态代码414 Request-URI Too Long。你可以在RFC 2616上看到更多的细节。
414 Request-URI Too Long
对于客户端定义的限制,服务器没有任何返回的意义,因为服务器根本不会接收请求。
从技术上讲,我曾见过如果URL长度超过2000个字符,HTTP GET就会出现问题。在这种情况下,最好使用HTTP POST或分割URL。
如前所述,HTTP本身对请求长度没有任何硬编码限制;但是浏览器对GET方法中允许的2048个字符有限制。
是的。GET请求没有任何限制。
我能够发送~4000字符作为查询字符串的一部分使用Chrome浏览器和curl命令。
我使用的是Tomcat 8。x服务器已经返回了预期的200 OK响应。
以下是谷歌Chrome HTTP请求的截图(由于安全原因,隐藏了我尝试的端点):
响应
浏览器限制如下:
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
想要更多吗?看到# EYZ0。