Tomcat8 无法获取Post参数

2020-04-17  本文已影响0人  BennyTian

问题起因

今天将 Spring4.x 升级到 5.2.x 因为 Spring5.2.x基于Tomcat8及以上, 所以把之前用的 Tomcat也从6.x升级到8.x

问题详情

GET请求: 一切正常, 参数都可以获取到
POST请求: 所有前端提交的表单数据丢失 , 参数无法获取.

问题排查

  1. 尝试修改SpringMVC相关的配置,Debug求情流程 -> 无解
  2. 将Tomcat8换成了 Jetty -> 恢复正常

Jetty下没问题 所以肯定是Tomcat8的问题

Tomcat6.x 配置分析

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" acceptCount="512" maxThreads="2048" useBodyEncodingForURI="true" maxPostSize="0"/>

这个是现有Tomcat6的配置, 其中有一个参数 maxPostSize="0" 是用来限制POST请求内容的大小限制的, 在Tomcat6.x下 , maxPostSize="0" 表示不限制POST请求大小, 但是在Tomcat8.x下, maxPostSize>="0" 则表示禁止POST请求,如果要不限制POST请求大小,则为 maxPostSize<"0" .

MaxPostSize
maxPostSize Tomcat6.x Tomcat 8.x
maxPostSize = 0 不限制 禁止POST请求
maxPostSize > 0 指定大小 指定大小
maxPostSize < 0 -- 不限制

问题解决

只需要将 maxPostSize 改成小于0的即可

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" acceptCount="512" maxThreads="2048" useBodyEncodingForURI="true" maxPostSize="-1"/>
上一篇下一篇

猜你喜欢

热点阅读