本文由葡萄城技术团队于 SegmentFault 葡萄城问答子站 原创并首发,关注“葡萄城控件”标签,获取更多开发技巧和经验。

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。


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

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

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

这个时候我们需要根据实际情况来修改服务器的配置,Tomcat中进行如下修改:打开tomcat目录下的conf目录,打开server.xml 文件,找到<Connector>标签,如果其中存在maxPostSize属性,那么修改属性的值(单位是KB),如果不存在maxPostSize属性,则需手动在标签中添加maxPostSize然后设置该属性的值。例如:

<Connector …… maxPostSize="10240"/>

这样设置后POST请求的最大长度就被设置成了10M,另外如果需要不限制POST请求的最大长度,那么设置maxPostSize="0"即可。

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


葡萄城技术团队
2.7k 声望31.8k 粉丝

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。