目录

修改前端表单post提交时最大长度限制

修改前端表单post提交时最大长度限制

问题出现的背景: 做excel导出时,使用post请求发现前台传递的数小于200kb可以导出去,如果大于200kb,则会在请求时报400错误,无法将将请求传递到后端。

原因:对于我们常用的WEB服务器,前端表单提交数据传给后端时参数的大小是有限制的

下面我将分别举例进行说明( 默认单位是KB ):Jetty、Tomcat

Jetty

  1. 报错:**Caused by: java.lang.IllegalStateException: Form is larger than max length 200000 idea jetty **

  2. 原因及解决方式

    原因就是Jetty默认的对于前端传递参数的设置大小是200kb,超过了会报400错误,且无法调用后端接口

    方法一:

    https://i-blog.csdnimg.cn/blog_migrate/b834abf9807f5efec8f4b77ae5dd83f2.png

    方法二:

    在WEB-INF目录下的jetty-web.xml文件中,加入如下设置

<?xml version="1.0"?>  
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">  
<!--Jetty6设置-->
<Configure id="WebAppContext" class="org.mortbay.jetty.webapp.WebAppContext">  
	<Set name="maxFormContentSize" type="int">-1</Set>  
</Configure> 

<!--Jetty7设置-->
<Configure id="WebAppContext" class="org.eclipse.jetty.webapp.WebAppContext">  
	<Set name="maxFormContentSize" type="int">-1</Set>  
</Configure> 

<!--Jetty9设置-->
<Call name="setAttribute">  <Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
    <Arg>-1</Arg>
</Call>

(即对maxFormContentSize重新赋值,-1表示不限制,正数值表示所允许的最大bytes):

Tomcat

针对以上的问题,我则顺便查了下Tomcat,他的默认值是: maxPostSize=“2097152” (也就是2M的大小)

解决方式:

在tomcat

的TOMCAT_HOME/conf/server.xml中添加一行:

找到里面的Connector节点,在该节点中添加"maxPostSize"属性,将该属性值设置成你想要的最大值(单位:byte,-1表示不限制(谨慎使用,服务器压力会太大)

<Connector connectionTimeout=“20000” port=“8089” protocol=“HTTP/1.1” redirectPort=“8443”

maxPostSize=“10485760”/>

BES

BES: 默认限制为2097152bytes(2MB). 修改默认限制值的方法如下:

通过BES控制台进行设置:独立实例->WEB容器->自定义属性 里添加 maxPostSize 属性(单位:KB,0表示不限制)。

Weblogic

这个服务器一般生产中用的应该都比较多,但是此次我并没有找到该服务器对该值的相关设置,且将我原本报错的代码放在Weblogic上面也没出现问题,具体欢迎各位到老留言