Web Services HTTP GET请求的最大长度

35g0bw71  于 2023-08-06  发布在  其他
关注(0)|答案(7)|浏览(246)

HTTP GET请求的最大长度是多少?
是否定义了一个响应错误,如果服务器收到一个超过此长度的GET请求,它可以/应该返回?
这是在Web服务API的上下文中,尽管浏览器限制也很有趣。

31moq8wy

31moq8wy1#

该限制取决于所使用的服务器和客户端(并且如果适用,还取决于服务器或客户端正在使用的代理)。
大多数服务器和客户端都有8192字节(8 KB)的限制,这通常可以在服务器或客户端设置中进行配置。HTTP规范在第4.1节中推荐 * 8000个八位字节:

    • 建议**所有发送方和接收方在协议元素中至少支持8000个八位字节的URI。请注意,这意味着某些结构和在线表示(例如,HTTP/1.1中的请求行)在某些情况下必须更大。

但这因此不是必需的。年龄较大的客户端的限制通常较低。例如,Internet Explorer有大约2KB的限制。HTTP规范的上一版本甚至字面上陈述了以下内容:

  • 注意:服务器应该谨慎对待超过255字节的URI长度,因为一些较旧的客户端或代理实现可能不支持这些长度。

如果在浏览器或服务器中超过了限制,大多数人会在没有任何警告的情况下截断限制之外的字符。但是,某些服务器可能会发送HTTP 414“URI Too Long”错误。
如果你需要发送大数据,那么最好使用POST而不是GET。它的限制要高得多,但更依赖于所使用的服务器而不是客户端。通常,平均Web服务器最多允许4 GB。这也可以在服务器设置中进行配置。当超过POST限制时,普通服务器将显示特定于服务器的错误/异常,通常为HTTP 500错误。

bq9c1y66

bq9c1y662#

你在这里问了两个不同的问题:
HTTP GET请求的最大长度是多少?
如前所述,HTTP本身并没有对请求长度施加任何硬编码限制;但是浏览器有2KB- 8 KB的限制(如果我们计算 * 非常旧的 * 浏览器,则为255字节)。
是否定义了一个响应错误,如果服务器收到的GET请求超过此长度,则服务器可以/应该返回该错误?

  • 这是一个没有人回答的问题 *

HTTP 1.1为达到服务器定义的限制的情况定义了状态码414 Request-URI Too Long。你可以在RFC 2616中看到更多的细节。
对于客户端定义的限制,服务器返回一些东西没有任何意义,因为服务器根本不会接收请求。

xhv8bpkk

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

ee7vknir

ee7vknir4#

类似的问题在这里:Is there a limit to the length of a GET request?(第一个字符)
我已经达到了我的共享主机帐户的限制,但浏览器在到达服务器之前返回了一个空白页面。

wfveoks0

wfveoks05#

从技术上讲,如果URL长度超过2000个字符,HTTP GET就会出现问题。在这种情况下,最好使用HTTP POST或拆分URL。

kuuvgm7e

kuuvgm7e6#

如前所述,HTTP本身并没有对请求长度施加任何硬编码限制;但是浏览器对GET方法中允许的2048个字符有限制。

h9a6wy2h

h9a6wy2h7#

x1c 0d1x的数据
是的。GET请求没有任何限制。
我能够使用Chrome浏览器和curl命令发送~4000个字符作为查询字符串的一部分。
我正在使用Tomcat 8.x服务器,它返回了预期的200 OK响应。
以下是Google Chrome HTTP请求的屏幕截图(由于安全原因,隐藏了我尝试的端点):
响应


相关问题