HTTP GET请求的最大长度是多少?是否存在定义的响应错误,如果服务器收到超过此长度的GET请求,它可以/应该返回?
更新如标记中所示,这是在Web服务API的上下文中,尽管看到浏览器限制也很有趣。
答案 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
答案 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)