http 413错误
博主最近在开发自己项目的文件相关模块。在部署到docker,前后端交互测试时,提示文件上传异常,遇到了413错误。错误信息:Request failed with status code 413
这个错误 Request failed with status code 413
是 HTTP 协议中的一个状态码,表示 Payload Too Large
(请求实体过大)。发生该错误的原因通常是Web服务器(如Nginx)或后端服务对请求大小做了限制,而这次请求的负载超过了限制。
解决方法:
- 对于过大的文件选用分块上传方案,以及限制用户上传文件大小、数量。
- 调整Web服务器或后端服务对请求大小限制。
Web服务器
- Nginx:修改 client_max_body_size(默认1MB):
1 | http { |
后端
Spring Boot:在application.properties中添加配置:
1
2spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MBGin框架:添加限制中间件
1
2
3
4
5
6
7
8
9
10
11
12
13
14func main() {
r := gin.Default()
// 限制所有请求体
r.Use(func(c *gin.Context){
c.Request.Body = http.MaxBytesReader(c.Writer, c.Request.Body, 10<<20) // 10MB
c.Next()
})
// 或者限制单个路由
r.POST("/upload", func(c *gin.Context) {
c.Request.Body = http.MaxBytesReader(c.Writer, c.Request.Body, 10<<20)
})
}
调整服务器与后端服务的请求体大小限制后,就可以正常上传文件了
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.