在使用Express 3.4.8中的HTTP状态代码进行响应时,POST数据“丢失”

时间:2014-02-17 13:55:18

标签: javascript angularjs express http-status-codes

我正在使用Express 3.4.8并为我的所有路由设置了一个处理程序,检查权限 假设凭证(随每个请求一起发送)无效。在这种情况下,我想以 403 的状态回复。

app.all('*',function(req,res,next){

  //req.body contains an object `credentials`

  res.send(403);
});

如果我这样做,req.body将是一个空对象。请注意,请求是从Angular应用程序发出的,并且绝对正确。

一旦省略状态,一切都会正常。像那样:

app.all('*',function(req,res,next){
  res.send('Im not a status code');
});

在这种情况下,req.body将按预期包含凭据。请记住,原始请求是在外部进行的,从未触及过。

任何人都可以重现这一点,并提供有关如何修复它的提示吗?


这正在慢慢腐蚀我内心的平静。整个过程完全没有任何意义。如果我在逻辑的最开始做console.log(req.body),那么在authCheck确定凭证是否有效之前,它仍然会失败。

1 个答案:

答案 0 :(得分:0)

我仍然不知道为什么会以这种特定方式失败,但我找到了解决方案。

“失败”是因为CORS会导致Angular发送OPTIONS请求。

请参阅:AngularJS performs an OPTIONS HTTP request for a cross-origin resource

我为每个OPTIONS请求回复一个简单的状态200 messsage,之后,原始POST将按预期传递。