У меня есть 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" больше не может быть получено на моей стороне клиента?