2016-01-19 2 views
0

У меня есть промежуточное программное обеспечение в приложении Express/Node.js для защиты определенного маршрута.Быстрое промежуточное программное обеспечение подразумевает тайм-аут запроса

Дело в том, когда я использую это промежуточное программное обеспечение, я получаю тайм-аут запроса, если credentals проверить неправильно

Вот код, который я в настоящее время используют:

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 ...'); 
}); 

Вопрос: почему я получить этот тайм-аут?

EDIT

Если я запрос GET с помощью браузера, то у меня есть тайм-аут запроса. Однако, если я инициирую запрос GET по-другому, тогда я не получаю никакого таймаута и код работает. Возможно ли, что GET /favicon каким-то образом испортили этот материал?

ответ

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

+0

Иногда, я просто хочу, чтобы ударить меня в лицо ... Спасибо большое! – Mornor

+0

** Редактировать ** Работайте в случае правильных учетных данных, но не перенаправляйте ('res.redirect ('/')'). Любая причина? – Mornor

+0

Обновите свой вопрос с помощью нового кода, но я предполагаю, что вы вызываете следующее * и * перенаправление, которое должно завершиться неудачей с ошибкой «headers alreadybsent». – Paul