同时使用bodyParser.json()和bodyParser.urlencode()结果post请求得到504错误
发布于 2 年前 作者 yifon 1409 次浏览 来自 问答

写一个本地post请求发数据到本地服务器,然后通过本地服务器post到远程服务器http://www.imooc.com/data/check_f.php,然后发现一直报错504,检查了很久,发现我把bodyParser.json()或者bodyParser.urlencode()的其中一种注释掉都可以获取到数据(我之前是两种方式都存在的)。 不明白,这两种解析同时全局写为什么会有干扰? 屏幕快照 2018-01-13 下午11.25.38.png

屏幕快照 2018-01-13 下午11.26.03.png

客户端: $.post(“http://localhost:3000/data/check_f.php”, { num: $("#inputNumber").val() }, function (data) { $("#infoList").append("<li>你输入的数字 <b>" + $("#inputNumber").val() + “</b>是<b>” + data + “</b></li>”); }) 本地服务器端用代理(同时请求体原先用上面两种方式解析): var proxy = require(‘http-proxy-middleware’); var dataProxy = proxy(’/data’, { target: “http://www.imooc.com/”, changeOrigin: true }); app.use(’/data/*’, dataProxy);

为什么会有冲突呢?

2 回复

楼主,你好 bodyParser.json() 解析的是请求头为Content-Type: application/json的。解析到req.body bodyParser.urlencoded({ extended: false })解析的是请求Content-Type: application/x-www-form-urlencoded的。解析到req.body

两者混合使用是没有冲突的。

@WenNingZhang 是的,没冲突,其实我描述这问题不太准备,实际的504原因是我不该对跨域的请求进行请求体解析造成的。实际的原因我已经分析出来了,谢谢。 可以看看 https://segmentfault.com/q/1010000012831152 ,如果有不准确的可以指出。

回到顶部