我使用Angular来POST我的API。当我处理CORS时,我已将标题设置为www-form-urlencoded
以避免飞行前的#34。
$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) {
});
现在的问题是我似乎无法解析被POST的对象,即使我在server.js
中有这个我认为可以完成这项工作的对象:
var bodyParser = require('body-parser');
app.use( bodyParser.urlencoded({ extended: true }));
我尝试使用req.body.key1
访问POSTed值但我获得了undefined
答案 0 :(得分:3)
您实际上并没有发送application/x-www-form-urlencoded
数据,因此中间件变得混乱。设置Content-Type
标题告诉服务器您要发送什么类型的数据,但实际上并没有在任何地方更改数据格式,因为没有任何内容告诉Angular您要发送urlencoded
数据,所以服务器仍在获取JSON。
This answer显示了如何对数据进行编码。