在Expressjs中解析application / x-www-form-urlencoded

时间:2015-01-04 19:09:47

标签: angularjs node.js express

我使用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

1 个答案:

答案 0 :(得分:3)

您实际上并没有发送application/x-www-form-urlencoded数据,因此中间件变得混乱。设置Content-Type标题告诉服务器您要发送什么类型的数据,但实际上并没有在任何地方更改数据格式,因为没有任何内容告诉Angular您要发送urlencoded数据,所以服务器仍在获取JSON。

This answer显示了如何对数据进行编码。