我在Angular中有一个httpInterceptor,它捕获从我的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..
}
}
我正在检查错误响应中状态代码401之外的statusText
字段,看是否显示“ expired_token”,这是我在API中设置的值。看起来像这样:
var errorresponse = new HttpResponseMessage(HttpStatusCode.Unauthorized)
{
Content = new StringContent("expired_token"),
ReasonPhrase = "expired_token"
};
在我切换到新PC并重新安装所有东西之前,它运行良好。 (包括Angular,VS2017,iisexpress等。)我在错误响应中收到的statusText
字段突然不再说'expired_token'。相反,它总是返回“ OK”,我相信这是默认值。看来我必须使用“错误”字段进行检查,该检查是否携带相同的消息。
但是这个问题确实让我感到好奇。因此,我在这个问题上进行了更深入的探讨。在Angular的HttpResponseBase类文档中,在statusText
属性上说“不依赖于此”。但是该文件未提及确切含义。谁能帮我解释为什么我不应该依赖statusText
属性,或者为什么我的客户端无法再获取其“ expired_token”值了?