Parsing application/x-www-form-urlencoded in Expressjs



我正在使用 Angular 将 POST 到我的 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中有这个我认为可以完成这项工作,我似乎也无法解析正在 POST 的对象:

var bodyParser     = require('body-parser');
app.use( bodyParser.urlencoded({ extended: true }));

我正在尝试使用 req.body.key1 访问 POST 值,但我得到了undefined

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

此答案显示了如何对数据进行编码。

最新更新