我正在使用 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。
此答案显示了如何对数据进行编码。