我的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
以某种方式弄乱了这些东西吗?
答案 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();
});