Express中间件意味着请求超时

时间:2016-01-19 11:21:01

标签: 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以某种方式弄乱了这些东西吗?

1 个答案:

答案 0 :(得分:4)

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