POST请求大小不限制?

前言

一直以来认为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的大小限制!

### 回答1: GET 和 POSTHTTP 请求方式中的两种常用方式。GET 请求是用于请求数据的,POST 请求是用于提交数据的。 GET 请求通过 URL 传递参数,而 POST 请求通过请求体传递参数。GET 请求对传输数据的大小限制,而 POST 请求通常没有大小限制。GET 请求可以被缓存,而 POST 请求不会被缓存。GET 请求的结果可以被收藏为书签,POST 请求行。因此,GET 请求通常用于获取数据,POST 请求则通常用于提交数据。 ### 回答2: GET请求POST请求HTTP协议中常见的两种请求方式,它们有以下几点区别: 1. 参数传递方式同: GET请求通过URL的查询字符串传递参数,参数会附加在URL的末尾,如:http://example.com?param1=value1&param2=value2。而POST请求则将参数放在请求体中传递,不会直接暴露在URL中。 2. 请求长度限制同: GET请求对URL的长度有限制同浏览器对URL长度的限制同,一般在2048个字符以内。而POST请求请求体的长度没有限制。 3. 安全性同: GET请求的参数暴露在URL中,容易被恶意截取、修改和篡改,因此传输敏感信息时适合使用GET请求。而POST请求的参数在请求体中,不会直接暴露,相对更安全。 4. 缓存处理方式同: GET请求会被浏览器缓存起来,如果再次请求相同的URL,浏览器会直接返回缓存的内容。而POST请求不会被缓存,每次请求都会重新获取最新的数据。 5. 使用场景区别: GET请求适用于对服务器资源进行查询操作,不会改变服务器的状态,对服务器的负载较小,可以被书签收藏。而POST请求适用于向服务器提交数据,会改变服务器的状态,对服务器的负载较大。 总结:GET请求适用于查询操作、参数较少的情况,安全性要求较低;POST请求适用于提交数据、参数较多、安全性要求较高的情况。 ### 回答3: GET请求POST请求HTTP协议中最常用的两种请求方法,它们的区别如下: 1. GET请求是从服务器获取资源的请求,而POST请求是向服务器提交数据的请求。 2. GET请求的参数会附加在URL的末尾,以查询字符串的形式传递给服务器,如:`http://example.com/path?param1=value1&param2=value2`。而POST请求的参数则包含在请求的消息体中,不会暴露在URL中。 3. GET请求对数据长度有限制,一般在几千个字符之内,而POST请求对数据长度没有限制。 4. GET请求的安全性较低,因为参数会附加在URL中,容易被窃取或缓存。而POST请求的安全性较高,请求参数不会明文传输,并且可以使用SSL等加密协议进行安全传输。 5. GET请求可被缓存,可通过浏览器的回退、刷新、书签等操作重复发送,适用于获取静态资源。POST请求可被缓存,且每次发送时都需要重新构建请求。 6. GET请求在URL中传递参数,可被其他人直接看到和修改,适合传递敏感信息。POST请求参数放在请求的消息体中,更加安全。 7. GET请求属于幂等的,即多次重复的请求对资源的状态没有影响。而POST请求属于幂等的,多次重复的请求会对资源状态产生副作用。 综上所述,GET请求适用于获取数据,而POST请求适用于提交数据。在选择使用GET还是POST时,需要根据实际情况考虑数据的安全性、长度限制、缓存和幂等性等因素。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值