我使用的是expressjs和body-parser中间件。
这就是我如何启动它的:
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
我从客户端发送了一个DELETE请求,当我试图从服务器端获取它时,我得到了一个空对象:
app.delete('/', function(req, res) {
console.log(util.inspect(req.body)); //outputs {}
//some more code
});
然而,当我用帖子发送它时,我得到了我需要的东西:
app.post('/delete', function(req, res) {
console.log(util.inspect(req.body)); //outputs { mid: 'ffw1aNh2' }
//some more code
});
值得注意的是,我没有对客户端(angularjs)做任何更改,但是方法、url和firefox网络调试器显示了在这两种情况下发送的数据。
这里遗漏了什么?为什么我在delete方法上得到一个空的主体对象?
发布于 2016-06-13 18:13:47
在$http服务源代码中,使用$http的DELETE请求不允许在请求正文中发送数据。
DELETE请求的规范对于请求主体是否应该被允许有些含糊,但是Angular不支持它。
允许请求主体的唯一方法是POST、PUT和PATCH。所以问题不在于你的代码,而在于Angular的$http服务。
使用这个
$httpProvider.defaults.headers.delete = { "Content-Type": "application/json;charset=utf-8" };
然后
$http.delete(url, { data: data })
https://stackoverflow.com/questions/37796227
复制相似问题