HTTP GET请求的最大长度是多少?是否存在定义的响应错误,如果服务器收到超过此长度的GET请求,它可以/应该返回?
update: 如标签中所示,这是在Web服务API的上下文中,尽管看到浏览器限制也很有趣 .
你在这里问两个不同的问题:
HTTP GET请求的最大长度是多少?
如前所述,HTTP本身不会对请求长度施加任何硬编码限制;但是浏览器的限制范围是2kb - 8kb(如果算上非常旧的浏览器,则为255字节) .
是否定义了响应错误,如果服务器收到超过此长度的GET请求,它可以/应该返回?
那是没有人回答的 .
对于达到服务器定义的限制的情况,HTTP 1.1定义了状态代码 414 Request-URI Too Long . 您可以在RFC 2616上查看更多详细信息 .
414 Request-URI Too Long
对于客户端定义的限制,服务器返回内容没有意义,因为服务器根本不会收到请求 .
希望这可以帮助 .
浏览器限制是:
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
想要更多?见this question on Stack Overfollow
从技术上讲,如果URL长度超过2000个字符,我发现HttpGet会有问题 . 在这种情况下,最好使用HttpPost或拆分URL .
类似的问题:Is there a limit to the length of a GET request?
我已达到限制并在我的共享主机帐户上,但浏览器在它到达服务器之前返回了一个空白页我认为 .
如前所述,HTTP本身不会对请求长度施加任何硬编码限制;但是浏览器的限制范围是get方法中允许的2048字符 .
是的 . GET请求没有限制 .
I am able to send ~4000 characters as part of the query string using chrome browser & curl command both.
我正在使用tomcat 8.x服务器,它已经返回了预期的200 OK响应 .
这是chrome http请求的屏幕截图(由于安全原因隐藏了我尝试过的 endpoints ):
回复
限制取决于服务器和使用的客户端(如果适用,还取决于服务器或客户端使用的代理) .
大多数Web服务器的限制为8192字节(8KB),通常可在服务器配置中的某处进行配置 . 至于客户端问题,HTTP 1.1规范甚至警告过这个,这里是chapter 3.2.1的摘录:
注意:服务器应该谨慎依赖于长度超过255字节的URI,因为某些较旧的客户端或代理实现可能无法正确支持这些长度 .
限制在MSIE和Safari大约2KB,在Opera大约4KB和在Firefox大约8KB . 因此,我们可以假设8KB是最大可能长度,并且2KB是服务器端依赖的更可承受的长度,并且255字节是假设整个URL将进入的最安全长度 .
如果在浏览器或服务器中超出限制,大多数将仅截断限制之外的字符而不发出任何警告 . 但是,某些服务器可能会发送HTTP 414 error . 如果您需要发送大数据,那么最好使用POST而不是GET . 它的限制要高得多,但更多地依赖于使用的服务器而不是客户端 . 通常,平均网络服务器允许高达2GB左右 . 这也可以在服务器设置中的某处进行配置 . 当超过POST限制时,平均服务器将显示特定于服务器的错误/异常,通常为HTTP 500错误 .
7 回答
你在这里问两个不同的问题:
如前所述,HTTP本身不会对请求长度施加任何硬编码限制;但是浏览器的限制范围是2kb - 8kb(如果算上非常旧的浏览器,则为255字节) .
那是没有人回答的 .
对于达到服务器定义的限制的情况,HTTP 1.1定义了状态代码
414 Request-URI Too Long
. 您可以在RFC 2616上查看更多详细信息 .对于客户端定义的限制,服务器返回内容没有意义,因为服务器根本不会收到请求 .
希望这可以帮助 .
浏览器限制是:
想要更多?见this question on Stack Overfollow
从技术上讲,如果URL长度超过2000个字符,我发现HttpGet会有问题 . 在这种情况下,最好使用HttpPost或拆分URL .
类似的问题:Is there a limit to the length of a GET request?
我已达到限制并在我的共享主机帐户上,但浏览器在它到达服务器之前返回了一个空白页我认为 .
如前所述,HTTP本身不会对请求长度施加任何硬编码限制;但是浏览器的限制范围是get方法中允许的2048字符 .
是的 . GET请求没有限制 .
我正在使用tomcat 8.x服务器,它已经返回了预期的200 OK响应 .
这是chrome http请求的屏幕截图(由于安全原因隐藏了我尝试过的 endpoints ):
回复
限制取决于服务器和使用的客户端(如果适用,还取决于服务器或客户端使用的代理) .
大多数Web服务器的限制为8192字节(8KB),通常可在服务器配置中的某处进行配置 . 至于客户端问题,HTTP 1.1规范甚至警告过这个,这里是chapter 3.2.1的摘录:
限制在MSIE和Safari大约2KB,在Opera大约4KB和在Firefox大约8KB . 因此,我们可以假设8KB是最大可能长度,并且2KB是服务器端依赖的更可承受的长度,并且255字节是假设整个URL将进入的最安全长度 .
如果在浏览器或服务器中超出限制,大多数将仅截断限制之外的字符而不发出任何警告 . 但是,某些服务器可能会发送HTTP 414 error . 如果您需要发送大数据,那么最好使用POST而不是GET . 它的限制要高得多,但更多地依赖于使用的服务器而不是客户端 . 通常,平均网络服务器允许高达2GB左右 . 这也可以在服务器设置中的某处进行配置 . 当超过POST限制时,平均服务器将显示特定于服务器的错误/异常,通常为HTTP 500错误 .