Почему я не должен зависеть от HttpResponseBase.statusText в Angular - PullRequest
0 голосов
/ 24 октября 2018

У меня есть httpInterceptor в Angular, который перехватывает ответы об ошибках, отправленные из моей серверной части ASP.NET WebAPI, и проверяет, является ли это ответом токена с истекшим сроком действия.Если да, будет вызван вызов обновления API токена.эта часть выглядит следующим образом:

if (error.status === 401) {
     if (error.statusText === 'invalid_token' || error.statusText === 'unauthorized') {
         // navigate user out
     } else if (error.statusText === 'expired_token') {
         // refresh token
     } else {
         // something else..
     }
}

Я проверяю поле statusText помимо кода состояния 401 в ответе на ошибку, чтобы увидеть, говорит ли оно 'expired_token', что является значением, которое я установил в моем API.Это выглядит так:

var errorresponse = new HttpResponseMessage(HttpStatusCode.Unauthorized)
{
  Content = new StringContent("expired_token"),
  ReasonPhrase = "expired_token"
};

Работало нормально, пока я не переключился на новый ПК и не переустановил все.(включая Angular, VS2017, iisexpress и т. д.) Внезапно поле statusText, которое я получаю в ответах об ошибках, больше не говорит «expired_token».Вместо этого он всегда возвращает «ОК», которое я считаю значением по умолчанию.Похоже, я должен использовать поле «ошибка» для проверки, которая несет то же сообщение.

Но эта проблема меня заинтересовала.Так что я углубился в вопрос.В документе Angular класса HttpResponseBase , свойство statusText гласит: «не зависит от этого».Но в документе не упоминается, что именно это означает.Может кто-нибудь помочь мне объяснить, почему я не должен зависеть от свойства statusText, или почему его значение "expired_token" больше не может быть получено на моей стороне клиента?

...