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

当前端Excel导出数据超过200KB时,POST请求会遇到400错误。这是由于Jetty和Tomcat等服务器对表单提交数据大小有限制。对于Jetty,可以通过修改jetty-web.xml文件中的maxFormContentSize设置解除限制。在Tomcat中,可在server.xml的Connector节点中添加maxPostSize属性来调整。BES服务器可以在控制台的自定义属性中设置maxPostSize。Weblogic服务器未找到直接设置方法,但测试时未出现相同问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题出现的背景:做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错误,且无法调用后端接口
    方法一:
    在这里插入图片描述
    方法二:
    在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表示不限制(谨慎使用,服务器压力会太大)

Tomcat常见参数设置
<Connector connectionTimeout=“20000” port=“8089” protocol=“HTTP/1.1” redirectPort=“8443”

maxPostSize=“10485760”/>

BES

BES: 默认限制为2097152bytes(2MB). 修改默认限制值的方法如下:
通过BES控制台进行设置:独立实例->WEB容器->自定义属性 里添加 maxPostSize 属性(单位:KB,0表示不限制)。

Weblogic

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值