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;
и конечно происходит редирект.
но это конечно жесткое извращение, да и куда девать батхерт?
  • Вопрос задан
  • 982 просмотра
Пригласить эксперта
Ответы на вопрос 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)

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

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

Войти через центр авторизации
Похожие вопросы