javascript - 在 Express 3.4.8 中使用 HTTP 状态代码响应时,POST 数据获取 "lost"

标签 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 将包含预期的凭据。请记住,原始请求是外部发出的,从未被触及。

任何人都可以重现此问题并提供有关如何修复它的提示吗?

<小时/>

这正在慢慢侵 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/

相关文章:

html - 背景图像 : url() does not work when you open the html by an express app

node.js - 从 Express 堆栈中删除中间件的正确方法?

php - 将文本转换为图像并旋转

javascript - 当在循环期间绘制更多内容时,在 Canvas 中绘制变得越来越慢

javascript - 如何在不刷新页面的情况下在 HTML 网页中使用 javascript 编写内容?

javascript - Node.js 使用 setTimeout() 暂停和恢复流

javascript - ng-repeat 显示空表行

javascript - Angular |通过单击输入中的字形删除输入的值

javascript - 如何以 Angular 组织您的 .JS 文件?

node.js - 快速 Controller 模块化