zoukankan      html  css  js  c++  java
  • POST内容太大的问题

    背景:

      最近项目进入尾声,需要做交付测试,发现CMS生成页面在反复修改保存多次后,由于页面存在动态加载js的缘故,使得页面的内容越来越大,最终出现页面没有办法保存(ajax post将页面的内容发送给后端服务器)

    系统的架构如下图:

      

    即: 前端页面上用户修改了页面内容,点击保存按钮,通过ajax的post将页面的内容传递到后台的tomcat进行存数据库,浏览器上爆出错误net::ERR_CONTENT_LENGTH_MISMATCH

    查阅了很多相关的帖子,都说是nginx的用户权限的问题,因为大文件,nginx会做缓存,nginx的主进程没有权限去读取proxy_temp目录下的内容,但是,我的情况是,nginx的配置中user用的是root,所以,这个网上多数人说的解决方案不适合我这个情况。

    在nginx所在的机器上tcpdump查看包内容,其实能看到,内容是很多的,应该不是nginx丢包。

    接下来,去分析tomcat的问题,接着查阅各种大师的建议,说是tomcat的配置中默认对于post的最大包门限是2M,这个倒是非常像我这个错误的情况,因为重复修改保存页面之前,保存是可以的,反复操作,由于另外的问题导致页面的内容不断变多,所以post的内容也就大于2M了,这个时候就爆出问题了。

    修改tomcat的配置,将server.xml文件中的connector节点的属性中添加maxPostSize=“0”,注意,默认的tomcat是没有这个属性配置的,此处修改为0表示不限制。

     1   <Service name="Catalina">
     2 
     3     <!--The connectors can use a shared executor, you can define one or more named thread pools-->
     4     <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
     5         maxThreads="1000" minSpareThreads="100"/>
     6 
     7 
     8     <!-- A "Connector" represents an endpoint by which requests are received
     9          and responses are returned. Documentation at :
    10          Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
    11          Java AJP  Connector: /docs/config/ajp.html
    12          APR (HTTP/AJP) Connector: /docs/apr.html
    13          Define a non-SSL HTTP/1.1 Connector on port 8080
    14     -->
    15 
    16  <Connector port="8082" protocol="HTTP/1.1"
    17                connectionTimeout="20000"
    18                redirectPort="8443"
    19                maxPostSize="0"
    20                            URIEncoding="UTF-8"/>
    21 ..............

    这么修改后,重新启动tomcat,再次测试,发现就ok了,可以保存刚才那个大文件了。

  • 相关阅读:
    JAVA中重写equals()方法为什么要重写hashcode()方法说明
    深入浅出UML类图
    UML解惑:图说UML中的六大关系
    maven自动打包上传nexus仓库配置
    vi查找替换命令详解
    Maven运行JUnit测试(http://www.360doc.com/content/13/0927/15/7304817_317455642.shtml)
    Maven 排除依赖jar包
    2、【Spark】Spark环境搭建(集群方式)
    1、【Spark】Spark安装
    Centos7 执行firewall-cmd –permanent –add-service=mysql报错“ModuleNotFoundError: No module named 'gi'”
  • 原文地址:https://www.cnblogs.com/shihuc/p/5856223.html
Copyright © 2011-2022 走看看