POST请求大小不限制?

来源:互联网 发布:通用网络视频监控软件 编辑:程序博客网 时间:2024/05/16 11:32
前言

一直以来认为GET请求URL是限制长度的,而长度是随各个浏览器而有差异,POST请求是大小不做限制,但后来项目中第三方post一个很大的数据过来,接口一直受到null值

GET请求长度限制

理论上GET请求数据长度没有限制的,真正起到限制的是浏览器对其长度进行了限制。
为兼容各个浏览器的请求长度,可以总结为:URL长度限制为2083个字符。
下面是各个浏览器对字符长度的具体限制:
Microsoft Internet Explorer (Browser)
IE浏览器对URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。
Firefox (Browser)
对于Firefox浏览器URL的长度限制为65,536个字符。
Safari (Browser)
URL最大长度限制为 80,000个字符。
Opera (Browser)
URL最大长度限制为190,000个字符。
Google (chrome)
URL最大长度限制为8182个字符。
Apache (Server)
能接受最大url长度为8,192个字符。
Microsoft Internet Information Server(IIS)
能接受最大url的长度为16,384个字符。
通过上面的数据可知,为了让所有的用户都能正常浏览, URL最好不要超过IE的最大长度限制(2083个字符),当然,如果URL不直接提供给用户,而是提供给程序调用,这时的长度就只受Web服务器影响了。
注:对于中文的传递,最终会为urlencode后的编码形式进行传递,如果浏览器的编码为UTF8的话,一个汉字最终编码后的字符长度为9个字符。
因此如果使用的 GET 方法,最大长度等于URL最大长度减去实际路径中的字符数。

POST请求大小限制

POST请求理论上也是不限制大小的,真正对其大小进行限制的是服务器的处理程序能力。Tomcat服务器对POST大小限制为2M,这也就能解释为什么第三方给我POST过来3张图片(正常是300|400KB一张图片)的数据时候会有时候能接收到,有时候就只能收到null值。
解决这个问题可以在Tomcat的配置文件里取消POST大小限制,在conf目录下,server.xml文件,修改

<Connector port="8080" protocol="HTTP/1.1"        connectionTimeout="20000"        redirectPort="8443" maxPostSize="0"/>  

maxPostSize=”0”,即取消POST的大小限制!

遗憾的是我的项目没有用到Tomcat容器,这个方法对我不起任何帮助,我使用的是spring cloud 的restful 微服务,至于这个问题怎么解决,还有待续,TODO……

原创粉丝点击