Ошибка в запросе на выборку не останавливает функцию - PullRequest
0 голосов
/ 26 марта 2020

Я ввел вход в систему через firebase на своем веб-сайте, я отправляю информацию на мой сервер. там я создаю сеанс и токен csrf.

, но я вижу, что если мой csrf не совпадает, я получаю сообщение об ошибке, но функция продолжает работать так, как если бы это был успешный вход в систему.

вот код:

postIdTokenToSessionLogin("/sessionLogin", idToken, csrfToken).then(
      function() {
        // Redirect to profile on success.
        console.log("login succesful"); //this gets logged even if "postIdTokenToSessionLogin" gets caught 

        // window.location.assign("/profile");
      },
      function(error) {
        console.log(error); //i need this to run

        window.location.assign("/");
      }
    );


postIdTokenToSessionLogin = async function(url, idToken, csrfToken) {
  // POST to session login endpoint.
  const data = {
    idToken,
    _csrf: csrfToken
  };
  console.log(data);

  options = {
    method: "POST",
    body: JSON.stringify(data),
    headers: {
      "Content-Type": "application/json"
    }
  };
  // POST to session login endpoint.
  return fetch(url, options).catch(err => {
     throw err; //---------here i do get the error, 
  });
};


где я не прав?

1 Ответ

1 голос
/ 26 марта 2020

Вы должны полагаться на ok свойство Response:

fetch('https://httpbin.org/status/500')
.then(res => {
    if (res.ok) {
        return res;
    } else {
        throw res;
    }
}).catch(err => {
    console.error('Error: ', err.status);
});
...