Я боролся в течение 2 дней на этом, googled и stackoverflowed все, что мог, но я не могу это решить.
Я создаю простое приложение node (+ Express + Mongoose) со страницей входа, которая перенаправляется на главную страницу. Здесь мой сервер Код кофе:
app
.get '/', (req, res) ->
console.log "Here we are : root"
res.sendfile(__dirname + '/index.html')
.get '/login', (req, res) ->
console.log "Here we are : '/login'"
res.sendfile(__dirname + '/login.html')
.post '/credentials', (req, res) ->
console.log "Here we are : '/credentials'"
# (here comes credentials validation stuff with Mongoose)
res.redirect '/'
Страница входа делает запрос POST/credentials, где проверенные данные проверяются. Это работает. Я вижу "Вот мы:" /credentials "в консоли node.
Затем возникает проблема: res.redirect работает неправильно. Я знаю, что он достигает маршрута '/', потому что:
- Я вижу "Здесь мы: root" в консоли node
- Страница index.html отправляется обратно в браузер как ответ, но не отображается в окне. Инспектор Chrome показывает ответ запроса POST. Я могу видеть, что HTML-код отправляется в браузер в инспекторе, но URL остается/логин и страница входа в систему по-прежнему отображается на экране.
(Edit) Перенаправление выполняется в функции обратного вызова Mongoose, это не синхронно (как должно быть NodeJS). Для ясности я просто удалил материал проверки мандата Mongoose.
Я попытался добавить res.end()
, не работает
Я пробовал
req.method = 'get';
res.redirect('/');
и
res.writeHead(302, {location: '/'});
res.end();
Не работает
Что я делаю неправильно? Как я могу фактически покинуть страницу "/login", перенаправить браузер на "/" и отобразить полученный код HTML?
Спасибо за помощь за помощь:)