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."


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM