Post请求携带Base64头像触发413 PayloadTooLargeError问题求助
解决PayloadTooLargeError: request entity too large问题
这个错误和CORS无关,核心原因是包含Base64头像的请求体大小超出了服务器端的默认限制,调整请求体解析中间件的配置就能解决。
针对Express框架的具体解决步骤:
- 如果你用的是Express 4.16及以上版本,框架内置了请求体解析能力,无需单独安装bodyParser,直接在配置中间件时指定
limit参数:const express = require('express'); const app = express(); // 设置JSON请求体的最大限制,示例为10MB,可根据实际需求调整 app.use(express.json({ limit: '10mb' })); // 若请求是urlencoded格式,同步调整对应限制 app.use(express.urlencoded({ limit: '10mb', extended: true })); - 如果你仍在使用独立的bodyParser包,同样通过
limit参数调整:const bodyParser = require('body-parser'); app.use(bodyParser.json({ limit: '10mb' })); app.use(bodyParser.urlencoded({ limit: '10mb', extended: true }));
额外注意事项:
- Base64格式的文件体积会比原文件大30%左右,所以
limit的值要根据你允许的最大头像尺寸预留余量,比如允许5MB的原图,设置7-8MB的限制即可。 - 如果你的服务前端有Nginx这类反向代理,也要同步调整代理的请求体限制,比如在Nginx配置中添加:
server { client_max_body_size 10M; # 其他原有配置... } - 确认前端请求的
Content-Type与后端配置匹配:如果是把Base64放在JSON里传,就用application/json;如果是form-data格式,后端要对应配置multipart解析中间件(比如multer)。
内容的提问来源于stack exchange,提问作者Ibrahim Yahyaoui
相关产品推荐
相关产品推荐

