Web services HTTP GET请求的最大长度

Web services HTTP GET请求的最大长度,web-services,http,Web Services,Http,HTTP请求的最大长度是多少 如果服务器接收到超过此长度的GET请求,是否定义了服务器可以/应该返回的响应错误 这是在web服务API的上下文中进行的,尽管看到浏览器的限制也很有趣。这里有一个类似的问题: 我的共享主机帐户已达到限制,但浏览器在到达服务器之前返回了一个空白页。限制取决于使用的服务器和客户端(如果适用,还取决于服务器或客户端使用的代理) 大多数web服务器的限制为8192字节(8KB),通常可在服务器配置中的某个位置进行配置。至于客户端问题,HTTP 1.1规范甚至警告了这一点。以

HTTP请求的最大长度是多少

如果服务器接收到超过此长度的GET请求,是否定义了服务器可以/应该返回的响应错误


这是在web服务API的上下文中进行的,尽管看到浏览器的限制也很有趣。

这里有一个类似的问题:


我的共享主机帐户已达到限制,但浏览器在到达服务器之前返回了一个空白页。

限制取决于使用的服务器和客户端(如果适用,还取决于服务器或客户端使用的代理)

大多数web服务器的限制为8192字节(8KB),通常可在服务器配置中的某个位置进行配置。至于客户端问题,HTTP 1.1规范甚至警告了这一点。以下是一段摘录:

注意:服务器在依赖超过255字节的URI长度时应该谨慎,因为一些旧的客户端或代理实现可能无法正确支持这些长度

Internet Explorer和Safari中的限制约为2 KB,Opera中的限制约为4 KB,Firefox中的限制约为8 KB。因此,我们可以假设8KB是最大可能长度,2KB是服务器端可以依赖的更经济的长度,255字节是假设整个URL将进入的最安全长度

如果在浏览器或服务器中超出了限制,大多数浏览器都会在没有任何警告的情况下截断超出限制的字符。但是,某些服务器可能会发送错误消息

如果您需要发送大数据,那么最好使用POST而不是GET。它的限制要高得多,但比客户端更依赖于所使用的服务器。通常,一般的web服务器允许高达2GB左右


这也可以在服务器设置中的某个位置进行配置。当超过POST限制时,平均服务器将显示特定于服务器的错误/异常,通常为HTTP 500错误。

您在这里提出两个独立的问题:

HTTP GET请求的最大长度是多少


如前所述,HTTP本身不会对请求长度施加任何硬编码限制;但是浏览器的限制在2KB到8KB之间(如果我们计算非常旧的浏览器,则为255字节)

如果服务器收到的GET请求超过此长度,是否定义了服务器可以/应该返回的响应错误

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

HTTP 1.1将状态代码
414请求URI定义得太长
用于达到服务器定义的限制的情况。您可以查看有关的更多详细信息


对于客户端定义的限制,服务器返回某些内容没有任何意义,因为服务器根本不会接收请求。

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

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

对。GET请求没有任何限制

我能够使用Chrome浏览器和curl命令发送约4000个字符作为查询字符串的一部分

我使用的是Tomcat8.x服务器,它返回了预期的200OK响应

以下是Google Chrome HTTP请求的屏幕截图(出于安全原因,隐藏了我尝试的端点):

回应

浏览器限制为:

浏览器地址栏文档位置
或锚定标签
---------------------------------------------------
铬32779>64k
Android 8192>64k
Firefox>64k>64k
狩猎>64k>64k
Internet Explorer 11 2047 5120
边缘16 2047 10240

还要吗?请参阅。

可能重复的@KillianDS它与URL的最大长度完全无关。问题是关于发送到URL的请求的最大长度。@EJP GET的“数据”内容不超过URI。@JimAho您的注释也是第一条注释的副本。……您可以根据浏览器限制回答问题。如果使用HttpClient与REST服务器进行交互,您知道GET和POST之间是否存在任何差异(就有问题的请求大小而言)?当然,POST使用正文发送数据。HTTP规范没有对POST施加特定的大小限制。HTTP规范完全允许在GET和DELETE请求中放置正文。我已经用Java测试过了,它可以工作了。不幸的是,这里再次出现一些代理可能会破坏整个主体。Get和Post方法有一个非常特殊的含义,因此使用Post执行Get与使用锤子打碎鸡蛋是一样的。@nohros这在理想上是正确的,但Get也有Post/PUT没有的限制。例如,假设您想要执行一个涉及一组ID的非常长的查询;如果您在数百个ID上进行选择,这可能会违反允许的URL大小限制,而将该查询放在帖子中可以避免这种情况,即使它在概念上没有多大意义。就我个人而言,我希望HTTP允许GET请求具有像PUT和POST一样的实体。