tomcat解决POST请求过长的限制

发布时间:2017/05/30 00:05 发布者:ClarkPan

返回博客中心

      spreadJS是纯前端的产品,不限制后端的技术平台。随着java用户使用人数的增多,经常会使用服务器端的Excel IO进行导入,导出操作,要知道spreadJS的Excel IO操作是需要将spreadJS页面中的内容序列化成JSON(ssjson)然后传输至后台进行处理。然而很多时候,用户的spread中的内容很多,序列化成JSON往往很长。这时候就可能存在问题。

       我们都知道GET请求是有长度限制的,HTTP协议规范没有对URL长度进行限制,这个限制是浏览器对其进行的限制,不同的浏览器之间限制也会不同。例如:IE下URL长度的限制是2083字符,但在chrome下长度限制却是8182字符。

      我们都知道如果请求过长需要用POST方式去发送请求,这里很多人存在一个误区,认为POST方式没有大小限制。这个说法没错,POST本身是没有大小限制,HTTP协议规范也没有进行大小限制,但是通常服务器会在这里做限制以保证服务器的处理能力。例如:在Tomcat下取消POST大小的限制(Tomcat默认2M); 但是有时候序列化的JSON长度会超过2M就会出现请求内容为空的情况。

  这个时候我们需要根据实际情况来修改服务器的配置,Tomcat中进行如下修改:打开tomcat目录下的conf目录,打开server.xml 文件,找到<Connector>标签,如果其中存在maxPostSize属性,那么修改属性的值(单位是KB),如果不存在maxPostSize属性,则需手动在标签中添加maxPostSize然后设置该属性的值。例如:<Connector …… maxPostSize="10240"/>这样设置后POST请求的最大长度就被设置成了10M,另外如果需要不限制POST请求的最大长度,那么设置maxPostSize="0"即可。

  其他服务器如果出现类似情况,可以上网查询相关配置进行设置。


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网