Задать вопрос

Node.js express: res.redirect(path) посылает на клиент html. Почему?

через AJAX (XMLHttpRequest. POST запрос) получаю форму логина.
на сервере (node.js express) делаю проверку.
если проверка не проходит шлю на клиент отказ (окошко, что данные не верны) - все нормально, работает.
когда проверка проходит, при:
res.redirect(path_to_redirect)
на клиента прилетает html страницы редиректа, но не собственно редирект.
что не так? куда копать?
сделал костыль - отправляю:
res.redirect(200, path_to_redirect);
и на клиента обрезаю из ответа 'OK. Redirecting to ', а все остальное присваиваю href
и далее window.location.href = href;
и конечно происходит редирект.
но это конечно жесткое извращение, да и куда девать батхерт?
  • Вопрос задан
  • 1027 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Tendor
отправляй post запрос
Ответ написан
@slavak-ru Автор вопроса
почему-то не отображается ответ Abcdefgk:
"Да не надо вообще делать res.redirect
На клиенте надо отменить "действие по умолчанию" (не перезагружать страницу - наверняка же кнопка на форме имеет type='submit').
В ответе на запрос отправить путь "редиректа" - res.send('/bla-bla')
На клиенте сделать window.location = xhr.responseText"

хотел его поблагодарить.
сделал как предложил Abcdefgk , так работает.
и как он верно предположил, на странице форма, кнопка (submit). клиентский js, отменив действие по умолчанию, собирает и отправляет данные.
сервер принимает и если все ок шлет редрект. ( вместо res.redirect(path) сделал res.send(path) )

но вопрос остался - почему не работает серверный редирект на POST?
т.е. return res.redirect(path)

ведь обязан
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы