Express(Node.js)中POST请求req.body为空的问题排查
Express中POST请求req.body为空的原因及解决方法
错误原因
你客户端请求里的mode: 'no-cors'是问题根源。这个模式下,浏览器会强制将你设置的Content-Type: application/json替换为text/plain,而服务端的express.json()中间件仅解析Content-Type为application/json的请求,因此无法识别请求体,导致req.body为空。
解决方法
直接删除mode: 'no-cors'配置即可。你的请求属于同域请求(客户端和服务端均为localhost:3000),浏览器默认允许同域请求,无需开启no-cors模式。修改后的客户端代码如下:
const data ={agent: 41} const options = { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }; fetch('http://localhost:3000/post', options);
修改完成后,服务端就能正常解析请求体,终端会打印出期望的{ agent: 41 }。
内容的提问来源于stack exchange,提问作者Bear the death bringer
相关产品推荐
相关产品推荐

