@cloudz

Как сделать 302 редирект fetch?

В реакт приложении есть 3 страницы
1- login (форма авторизации)
2- confrim (подтверждение смски)
3- какая-то страница с бека

при отправки формы login, с бека возвращается либо json в котором говорится что нужно ввести sms и ui показывает страницу confirm.

Если подтверждение смской выключено, с бека возвращается 302 редирект, по которому нужно отправить пользователя на страницу с этого редиректа.

Проблема в том что все запросы уходят через fetch и в нем мне нужно как-то получить урл по которому отправить при 302 редиректе. Как правильно до него достучаться?

const response = fetch(url, {
  method: "POST",
  redirect: 'manual',
  headers: {
    Accept: "applicaton/json",
  },
  dataType: "JSON",
  body: data,
})
.then(res => {
  console.log(res.url)
  document.location = res.url;
})


Тут https://learn.javascript.ru/fetch-api#redirect
написано что при флаге redirect: 'manual', в res.url феча, будет url из 302 редиректа. Но это не так, в урле будет урл с которого уходил запрос.

В общем как перехватить урл с 302 и бросить на него пользователя?
  • Вопрос задан
  • 3109 просмотров
Решения вопроса 1
@cloudz Автор вопроса
В итоге сделал так:

const response = fetch(url, {
  method: "POST",
  headers: {
    Accept: "applicaton/json",
  },
  dataType: "JSON",
  body: data,
})
.then(res => {
  if (res.redirected) {
      document.location = res.url;
  }
})
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@nllsdfx
Redirected экспериментальная фича, не поддерживается Safari.

https://developer.mozilla.org/en-US/docs/Web/API/R...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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