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

10-11 10:22