我正在使用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确定凭证是否有效之前,它仍然会失败。
答案 0 :(得分:0)
我仍然不知道为什么会以这种特定方式失败,但我找到了解决方案。
“失败”是因为CORS会导致Angular发送OPTIONS请求。
请参阅:AngularJS performs an OPTIONS HTTP request for a cross-origin resource
我为每个OPTIONS请求回复一个简单的状态200 messsage,之后,原始POST将按预期传递。