【发布时间】:2011-02-09 05:42:43
【问题描述】:
【问题讨论】:
-
@KillianDS 它与 URL 的最大长度完全无关。问题是关于发送到一个URL的请求的最大长度。
-
@EJP GET 的“数据”内容不超过 URI。
-
@JimAho 你的评论也是第一条评论的重复.....
标签: web-services http
【问题讨论】:
标签: web-services http
限制取决于使用的服务器和客户端(如果适用,还取决于服务器或客户端使用的代理)。
大多数网络服务器都有 8192 字节 (8 KB) 的限制,通常可以在服务器配置中的某个位置进行配置。至于客户端问题,HTTP 1.1 规范甚至对此提出警告。这是chapter 3.2.1的摘录:
注意:服务器应该谨慎对待超过 255 字节的 URI 长度,因为一些较旧的客户端或代理实现可能无法正确支持这些长度。
Internet Explorer 和 Safari 中的限制约为 2 KB,Opera 中约为 4 KB,Firefox 中约为 8 KB。因此,我们可以假设 8 KB 是可能的最大长度,而 2 KB 是在服务器端依赖的更实惠的长度,而 255 字节是假设整个 URL 都会进入的最安全长度。
如果在浏览器或服务器中超出限制,大多数将截断超出限制的字符而不会发出任何警告。 一些服务器可能会发送HTTP 414 error。
如果您需要发送大数据,那么最好使用 POST 而不是 GET。它的限制要高得多,但更多地依赖于所使用的服务器而不是客户端。普通网络服务器通常最多允许大约 2 GB。
这也可以在服务器设置中的某处进行配置。当超过 POST 限制时,一般服务器会显示特定于服务器的错误/异常,通常是 HTTP 500 错误。
【讨论】:
你在这里问了两个不同的问题:
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
【讨论】:
这里有一个类似的问题:Is there a limit to the length of a GET request?
我的共享主机帐户已达到限制,但浏览器在到达我认为的服务器之前返回了一个空白页面。
【讨论】:
从技术上讲,我发现如果 URL 长度超过 2000 个字符,HTTP GET 就会出现问题。在这种情况下,最好使用 HTTP POST 或拆分 URL。
【讨论】:
如前所述,HTTP 本身不会对请求长度施加任何硬编码限制;但是浏览器对 GET 方法中允许的 2048 个字符有限制。
【讨论】: