javascript - Express中间件意味着请求超时

标签 javascript node.js express middleware

我的 Express/Node.js 应用程序中有一个中间件来保护特定路由。

问题是,当我使用这个中间件时,如果凭据检查错误,我会收到请求超时

这是我当前使用的代码:

var express = require('express');
var bodyParser = require('body-parser');

// Set Header because cross-domain call
app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "http://docker.local");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Authorization, Content-Type, Accept");
  next(); 
});  

function checkAuth(req, res, next){
  if(// Credentials right){
       next(); 
  } else {
       // If code enter in that case, it will generate a Timeout
       // even with next(); ...
  }
}

// Use checkAuth to protect route
app.get('/server', checkAuth, getMessages);
app.get('/', function(req, res){
  res.status(200).send('Slack Server is listening for outgoing webhooks ...');
});

问题是:为什么我会超时?

编辑

如果我使用浏览器发出 GET 请求,则会出现请求超时。但是,如果我以其他方式触发 GET 请求,则不会出现超时并且代码可以正常工作。 GET/favicon 是否有可能以某种方式搞乱了这些东西?

最佳答案

app.use 要求您调用 next 继续处理堆栈中的下一个中间件或请求。

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "http://docker.local");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Authorization, Content-Type, Accept");
  next();
});

Reference

关于javascript - Express中间件意味着请求超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34875445/

相关文章:

node.js - 在什么条件下 req.connection.remoteAddress 可以为空(ExpressJS)

javascript - onblur 事件未从 Html.TextBoxFor 助手触发

node.js - node.js/nginx 是否对常用文件使用内部缓存?

javascript - 如何将函数的结果从外部 javascript 脚本返回到 pug 文件?

javascript - 了解如何使用 NodeJS 创建一个简单的后端

node.js - 前端使用 Angular、CoffeeScript 和 Jade,后端使用 Node、Express 和 CoffeeScript

javascript - Vuepress 国际化

javascript - 是否可以同时重定向和发送 AJAX 请求,而无需等待 AJAX 请求的响应?

javascript - ExtJS:将模型列转换为网格中的行

javascript - 使用node.js创建httpserver