• springboot应用中post请求数据量过大导致后台接收参数为空(接收不到值)问题的解决办法


    在使用Spring Boot应用的时候,发现在post请求(以form表单形式提交)数据量过大的情况下,会导致后台接收不到值(参数为对象,对象中任何key对应的值都为空)。

    通过查看内置tomcat包的源码可以发现,Spring Boot应用中post请求数据量大小默认为2097152个字节(2M),当超过这一数据量的时候,就会导致后台接收参数为空。

    因此可以对症下药尝试着将post请求数据量大小限制加大(或去除)来解决问题,这样的尝试可以有两种方式。

    1.硬编码的方式。

    @Configuration
    public class HttpMaxPostSizeConfiguration {
        // Set maxPostSize of embedded tomcat server to 10 megabytes (default is 2 MB, not large enough to support file uploads > 1.5 MB)
        @Bean
        EmbeddedServletContainerCustomizer containerCustomizer() throws Exception {
            return (ConfigurableEmbeddedServletContainer container) -> {
                if (container instanceof TomcatEmbeddedServletContainerFactory) {
                    TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
                    tomcat.addConnectorCustomizers(
                            (connector) -> {
                                connector.setMaxPostSize(10485760); // 10 MB
                            }
                    );
                }
            };
        }
    }

    2.配置文件的方式。

    server :
       tomcat:
          max-http-post-size: 10485760

    其值为Integer类型,取值范围沿用Interger类型的取值范围,此外还可以将值设置为-1,表示不限制大小。

    更多的,如果Spring Boot应用是部署在Spring Cloud(微服务)环境下,应该先在网关服务内配置此属性。

    经过小心翼翼的尝试,问题得以解决。

    "how are you?"

    " ̶s̶a̶d̶,̶ ̶b̶r̶o̶k̶e̶n̶,̶ ̶d̶e̶f̶e̶a̶t̶e̶d̶,̶ ̶c̶r̶u̶s̶h̶e̶d̶,̶ ̶l̶o̶n̶e̶l̶y̶,̶ ̶f̶a̶l̶l̶i̶n̶g̶ ̶a̶p̶a̶r̶t̶ i'm fine."

    你要去做一个大人,不要回头,不要难过。
  • 相关阅读:
    CCleaner软件免费试用版与付费专业版区别
    TeamViewer 15.6.7新版本发布
    ABAPGIT用法
    ABAPGIT安装,配置及更新
    ABAPGIT安装,配置及更新
    SAP发布的WebService的登陆语言设置
    使用CG3Z向服务器添加文件时,报错:No physical path is configured for logical file name EHS_FTAPPL_2
    PO/PI 系统蓝图(SLD),企业服务存储库(ESR),整合目录(ID)基础配置
    S4 到 PO/PI proxy 配置手册
    在PI SLD中注册ABAP Technical System
  • 原文地址:https://www.cnblogs.com/yanggb/p/14754119.html
Copyright © 2020-2023  润新知