Перенаправление из запроса POST - PullRequest
0 голосов
/ 27 июня 2019

Это просто, у меня есть маршрутизатор, который перенаправляет только если он вызывается с POST.

router.post("/redirect", (req, res) => {
  res.redirect("/logged");
})

Он вызывается из петиции XHR / Fetch на странице клиента.

const btnTest = document.querySelector("#js-redirect");

btnTest.addEventListener("click", () => {
  fetch("/redirect", {
    method: "POST"
  });
});

Используя Morgan, сервер отвечает:

POST /redirect 302 9.000 ms - 29
GET /logged 200 2.816 ms - 9

Но на странице клиента ничего не происходит!

Я мог бы отправить ответ на страницу клиента и затем перенаправить window.location.Но разве это не должно работать по-другому?

1 Ответ

0 голосов
/ 27 июня 2019

Когда вы используете fetch, вы по сути говорите браузеру, что будете иметь дело с ответом.Браузер теперь не несет ответственности за обработку вашего запроса и поэтому не перенаправляет.

Вы можете прочитать заголовки из ответа, проверить состояние и посмотреть, есть ли заголовок Location и выполнить перенаправление самостоятельно.

...