HTTP GET请求的最大长度是多少?是否定义了一个响应错误,如果服务器收到一个超过此长度的GET请求,它可以/应该返回?这是在Web服务API的上下文中,尽管浏览器限制也很有趣。
31moq8wy1#
该限制取决于所使用的服务器和客户端(并且如果适用,还取决于服务器或客户端正在使用的代理)。大多数服务器和客户端都有8192字节(8 KB)的限制,这通常可以在服务器或客户端设置中进行配置。HTTP规范在第4.1节中推荐 * 8000个八位字节:
但这因此不是必需的。年龄较大的客户端的限制通常较低。例如,Internet Explorer有大约2KB的限制。HTTP规范的上一版本甚至字面上陈述了以下内容:
如果在浏览器或服务器中超过了限制,大多数人会在没有任何警告的情况下截断限制之外的字符。但是,某些服务器可能会发送HTTP 414“URI Too Long”错误。如果你需要发送大数据,那么最好使用POST而不是GET。它的限制要高得多,但更依赖于所使用的服务器而不是客户端。通常,平均Web服务器最多允许4 GB。这也可以在服务器设置中进行配置。当超过POST限制时,普通服务器将显示特定于服务器的错误/异常,通常为HTTP 500错误。
bq9c1y662#
你在这里问了两个不同的问题:HTTP GET请求的最大长度是多少?如前所述,HTTP本身并没有对请求长度施加任何硬编码限制;但是浏览器有2KB- 8 KB的限制(如果我们计算 * 非常旧的 * 浏览器,则为255字节)。是否定义了一个响应错误,如果服务器收到的GET请求超过此长度,则服务器可以/应该返回该错误?
HTTP 1.1为达到服务器定义的限制的情况定义了状态码414 Request-URI Too Long。你可以在RFC 2616中看到更多的细节。对于客户端定义的限制,服务器返回一些东西没有任何意义,因为服务器根本不会接收请求。
414 Request-URI Too Long
xhv8bpkk3#
浏览器限制为:
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
字符串想了解更多?请参阅this question on Stack Overflow。
ee7vknir4#
类似的问题在这里:Is there a limit to the length of a GET request?(第一个字符)我已经达到了我的共享主机帐户的限制,但浏览器在到达服务器之前返回了一个空白页面。
wfveoks05#
从技术上讲,如果URL长度超过2000个字符,HTTP GET就会出现问题。在这种情况下,最好使用HTTP POST或拆分URL。
kuuvgm7e6#
如前所述,HTTP本身并没有对请求长度施加任何硬编码限制;但是浏览器对GET方法中允许的2048个字符有限制。
h9a6wy2h7#
x1c 0d1x的数据是的。GET请求没有任何限制。我能够使用Chrome浏览器和curl命令发送~4000个字符作为查询字符串的一部分。我正在使用Tomcat 8.x服务器,它返回了预期的200 OK响应。以下是Google Chrome HTTP请求的屏幕截图(由于安全原因,隐藏了我尝试的端点):响应
的
7条答案
按热度按时间31moq8wy1#
该限制取决于所使用的服务器和客户端(并且如果适用,还取决于服务器或客户端正在使用的代理)。
大多数服务器和客户端都有8192字节(8 KB)的限制,这通常可以在服务器或客户端设置中进行配置。HTTP规范在第4.1节中推荐 * 8000个八位字节:
但这因此不是必需的。年龄较大的客户端的限制通常较低。例如,Internet Explorer有大约2KB的限制。HTTP规范的上一版本甚至字面上陈述了以下内容:
如果在浏览器或服务器中超过了限制,大多数人会在没有任何警告的情况下截断限制之外的字符。但是,某些服务器可能会发送HTTP 414“URI Too Long”错误。
如果你需要发送大数据,那么最好使用POST而不是GET。它的限制要高得多,但更依赖于所使用的服务器而不是客户端。通常,平均Web服务器最多允许4 GB。这也可以在服务器设置中进行配置。当超过POST限制时,普通服务器将显示特定于服务器的错误/异常,通常为HTTP 500错误。
bq9c1y662#
你在这里问了两个不同的问题:
HTTP GET请求的最大长度是多少?
如前所述,HTTP本身并没有对请求长度施加任何硬编码限制;但是浏览器有2KB- 8 KB的限制(如果我们计算 * 非常旧的 * 浏览器,则为255字节)。
是否定义了一个响应错误,如果服务器收到的GET请求超过此长度,则服务器可以/应该返回该错误?
HTTP 1.1为达到服务器定义的限制的情况定义了状态码
414 Request-URI Too Long
。你可以在RFC 2616中看到更多的细节。对于客户端定义的限制,服务器返回一些东西没有任何意义,因为服务器根本不会接收请求。
xhv8bpkk3#
浏览器限制为:
字符串
想了解更多?请参阅this question on Stack Overflow。
ee7vknir4#
类似的问题在这里:Is there a limit to the length of a GET request?(第一个字符)
我已经达到了我的共享主机帐户的限制,但浏览器在到达服务器之前返回了一个空白页面。
wfveoks05#
从技术上讲,如果URL长度超过2000个字符,HTTP GET就会出现问题。在这种情况下,最好使用HTTP POST或拆分URL。
kuuvgm7e6#
如前所述,HTTP本身并没有对请求长度施加任何硬编码限制;但是浏览器对GET方法中允许的2048个字符有限制。
h9a6wy2h7#
x1c 0d1x的数据
是的。GET请求没有任何限制。
我能够使用Chrome浏览器和curl命令发送~4000个字符作为查询字符串的一部分。
我正在使用Tomcat 8.x服务器,它返回了预期的200 OK响应。
以下是Google Chrome HTTP请求的屏幕截图(由于安全原因,隐藏了我尝试的端点):
响应
的