maximum length of HTTP GET request?
HTTP GET请求的最大长度是多少?是否定义了一个响应错误,如果服务器收到的GET请求超过此长度,则服务器可以/应该返回该错误?
更新:如标签中所示,这是在Web服务API的上下文中进行的,尽管看到浏览器的限制也很有趣。
限制取决于使用的服务器和客户端(如果适用,还取决于服务器或客户端使用的代理)。
大多数Web服务器的限制为8192字节(8KB),通常可以在服务器配置中的某个位置进行配置。关于客户端问题,HTTP1.1规范甚至警告说,这里是第3.2.1章的摘录:
Note: Servers ought to be cautious about depending on URI lengths
above 255 bytes, because some older client or proxy
implementations might not properly support these lengths.
限制是在msie和safari中约2千字节,在opera中约4千字节,在firefox中约8千字节。因此,我们可以假设8kb是最大可能长度,而2kb是服务器端可以依赖的更经济的长度,而255字节是假设整个URL将进入的最安全长度。
如果在浏览器或服务器中超出了限制,大多数人将在不发出任何警告的情况下截断限制之外的字符。但是,某些服务器可能会发送HTTP 414错误。如果您需要发送大数据,那么最好使用post而不是get。它的限制要高得多,但比客户机更依赖于所使用的服务器。通常,平均Web服务器允许高达2GB左右。这也可以在服务器设置中的某个位置配置。当超过POST限制时,平均服务器将显示特定于服务器的错误/异常,通常为HTTP 500错误。
您在这里提出两个单独的问题:
What's the maximum length of an HTTP GET request?
如前所述,HTTP本身不会对请求长度施加任何硬编码限制;但是浏览器的限制范围为2kb-8kb(如果我们计算非常老的浏览器,则为255字节)。
Is there a response error defined that the server can/should return if it receives a GET request exceeds this length?
那是没人接的电话。
HTTP 1.1为达到服务器定义的限制的情况定义了状态代码
对于客户端定义的限制的情况,服务器返回某些内容是没有意义的,因为服务器根本不会收到请求。
希望这有帮助。
浏览器限制为:
1 2 3 4 5 6 7 8 9 | 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 |
想要更多吗?请参阅有关堆栈跟踪的此问题
这里有类似的问题:GET请求的长度有限制吗?
我已经达到了限制,我的共享主机帐户,但浏览器返回了一个空白页,在它到达服务器之前,我想。
从技术上讲,我已经看到,如果URL长度超过2000个字符,httpget将出现问题。在这种情况下,最好使用httppost或拆分URL。
如前所述,HTTP本身不会对请求长度施加任何硬编码限制;但是浏览器对get方法中允许的2048个字符有限制。
是。GET请求没有限制。
1 | I am able to send ~4000 characters as part of the query string using chrome browser & curl command both. |
我使用的是Tomcat8.x服务器,它返回了预期的200OK响应。
下面是chromeHTTP请求的屏幕截图(隐藏由于安全原因而尝试的端点):
应答XY1〔1〕。