为什么我不应该依赖Angular中的HttpResponseBase.statusText

时间:2018-10-23 22:04:42

标签: angular http asp.net-web-api iis-express

我在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”值了?

0 个答案:

没有答案