Spring Boot接收超5MB String请求后前端无法接收响应问题排查
问题定位及解决方案
核心问题出在Spring Boot的请求体大小限制配置不完整,而非React端,以下是具体分析和修复步骤:
1. 为什么server.tomcat.max-http-post-size=10无效?
这个配置仅管控Tomcat层面的POST请求大小,但你设置的10默认单位是字节,相当于只允许10字节的请求体,完全不符合需求。正确写法需指定单位(比如10MB),但即便改对这个配置也不够——Spring MVC自身还有默认约5MB的请求体大小限制,这才是拦截大请求的关键。
2. 完整的Spring Boot配置修复
需要同时配置Spring MVC和Tomcat的请求大小限制,在application.properties中添加:
# Spring MVC层面的请求体最大限制(覆盖普通POST和文件上传场景) spring.servlet.multipart.max-request-size=10MB spring.servlet.multipart.max-file-size=10MB # Tomcat层面的POST请求大小限制 server.tomcat.max-http-post-size=10MB
若使用YAML配置:
spring: servlet: multipart: max-request-size: 10MB max-file-size: 10MB server: tomcat: max-http-post-size: 10MB
注:Spring Boot 1.x版本需将
spring.servlet.multipart替换为spring.http.multipart。
3. 如何排除React端问题?
用Postman或curl直接调用接口,传入超过5MB的请求体:
- 如果工具能收到响应(比如413错误或正常返回),再排查React的请求配置(比如是否设置了过短的超时时间);
- 如果工具也收不到响应,说明后端配置仍有问题,需检查是否有自定义拦截器、过滤器拦截了大请求。
额外提示
如果你的Controller中使用@RequestBody String接收请求体,确保没有额外的全局拦截器对请求体大小做二次限制。
内容的提问来源于stack exchange,提问作者Jill
相关产品推荐
相关产品推荐

