我正在使用 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 将包含预期的凭据。请记住,原始请求是外部发出的,从未被触及。
任何人都可以重现此问题并提供有关如何修复它的提示吗?
<小时/>这正在慢慢侵 eclipse 我内心的平静。整个过程完全没有任何意义。如果我在逻辑的最开始执行 console.log(req.body)
,因此在 authCheck 决定凭据是否有效之前,它仍然会失败。
最佳答案
我仍然不知道为什么会以这种特定方式失败,但我找到了解决方案。
“失败”是由于 CORS 会导致 Angular 发送 OPTIONS 请求而导致的。
参见:AngularJS performs an OPTIONS HTTP request for a cross-origin resource
我为每个 OPTIONS 请求响应一条简单的状态 200 消息,之后,原始 POST 将按预期通过。
关于javascript - 在 Express 3.4.8 中使用 HTTP 状态代码响应时,POST 数据获取 "lost",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21830918/