spring boot post请求数据太大接收不到参数(参数为空)报400错误。

spirng boot发送的请求,有的参数数据量大,有的参数数据量小。数据量大的发送不到后端,报400错误。

首先说以jetty为内嵌服务器的时候:

1、修改yml文件或者properties文件,

server.max-http-post-size=200*1024*1024,设置为200m,总够了吧,可以按照量设置小一点。

Spring Boot 1.4.0.M2之后就可以使用这个属性。适合于不修改代码,快速重新部署。

2、在java代码里面实现:

@Bean
public EmbeddedServletContainerCustomizer jettyCustomizer() {
    return new EmbeddedServletContainerCustomizer() {

        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            if (container instanceof JettyEmbeddedServletContainerFactory) {
                ((JettyEmbeddedServletContainerFactory) container)
                        .addServerCustomizers(new JettyServerCustomizer() {

                    @Override
                    public void customize(Server server) {
                        setHandlerMaxHttpPostSize(200 * 1024 * 1024, server.getHandlers());
                    }

                    private void setHandlerMaxHttpPostSize(int maxHttpPostSize,
                            Handler... handlers) {
                        for (Handler handler : handlers) {
                            if (handler instanceof ContextHandler) {
                                ((ContextHandler) handler)
                                        .setMaxFormContentSize(maxHttpPostSize);
                            }
                            else if (handler instanceof HandlerWrapper) {
                                setHandlerMaxHttpPostSize(maxHttpPostSize,
                                        ((HandlerWrapper) handler).getHandler());
                            }
                            else if (handler instanceof HandlerCollection) {
                                setHandlerMaxHttpPostSize(maxHttpPostSize,
                                        ((HandlerCollection) handler).getHandlers());
                            }
                        }
                    }
                });
            }
        }
    };
}

Spring Boot 1.3.x之后可以使用这个功能。

3、设置接收数据在 request body里面。上面两种情况适合于数据不放在request body里面的。

 

tomcat应该是类似的。

 

参考https://stackoverflow.com/questions/36872540/spring-boot-rest-service-form-too-large

你可能感兴趣的:(springboot)