我用Angular来发布我的API。在我处理cors的时候,我把头部设置为www-form-urlencoded
以避免“飞行前”。
$http.post(url, {key1: value1, key2: value2},{"headers":{ "Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8" }}).
success(function(data, status, headers, config) {
}).
error(function(data, status, headers, config) {
});
现在的问题是,我似乎无法解析正在发布的对象,即使我的
server.js
中有这个,我认为它可以完成以下工作:var bodyParser = require('body-parser');
app.use( bodyParser.urlencoded({ extended: true }));
我试图用
req.body.key1
访问发布的值,但是我得到undefined
最佳答案
您实际上并没有发送application/x-www-form-urlencoded
数据,因此中间件变得混乱。设置Content-Type
头会告诉服务器您发送的是哪种类型的数据,但实际上您不会在任何地方更改数据的格式,因为没有任何东西告诉angular您要发送urlencoded
数据,因此服务器仍在获取json。
This answer显示如何对数据进行编码。
关于angularjs - 解析ExpressJS中的application/x-www-form-urlencoded,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27769302/