限制取决于所使用的服务器和客户端(如果适用,还包括服务器或客户端使用的代理)。
大多数服务器和客户端的限制为8192字节(8 KB),通常可以在服务器或客户端设置中进行配置。HTTP规范建议在第4.1节中使用8000个八位字节:
强烈建议所有发送方和接收方至少支持具有8000个八位字节长度的协议元素的URI。请注意,这意味着某些结构和在线表示(例如,HTTP/1.1中的请求行)在某些情况下必然会更大。
但这并非必需。旧版客户端的限制通常较低。例如,Internet Explorer的限制约为2 KB。甚至HTTP规范的先前版本直接陈述如下:
注意:服务器应谨慎依赖超过255字节的URI长度,因为一些旧的客户端或代理实现可能不会正确支持这些长度。HTTP GET请求的最大长度是多少?
如先前提到的,HTTP本身不会对请求长度施加硬编码限制; 但浏览器会有不同的限制,范围从2 KB - 8 KB(如果考虑到非常旧的浏览器,则为255字节)。
如果服务器收到超过此长度的GET请求,是否定义了应返回的响应错误?
这是没有人回答的问题。
HTTP 1.1针对达到服务器定义的限制的情况,定义了状态码414 Request-URI Too Long
。您可以在RFC 2616上查看更多详细信息。
对于客户端定义的限制,服务器返回任何内容都没有意义,因为服务器根本不会接收到这个请求。
浏览器的限制包括:
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上的这个问题。
从技术上讲,如果URL长度超过2000个字符,我发现HTTP GET会出现问题。在这种情况下,最好使用HTTP POST或分割URL。
如前所述,HTTP本身没有对请求长度强制限制;但是浏览器有范围限制,在GET方法中允许的字符数为2048。