Angular Http 请求状态码 0 和 -1 是啥?

Posted

技术标签:

【中文标题】Angular Http 请求状态码 0 和 -1 是啥?【英文标题】:What are the Angular Http Request status codes 0 and -1?Angular Http 请求状态码 0 和 -1 是什么? 【发布时间】:2017-09-25 18:56:27 【问题描述】:

在查看生产应用程序的日志时,我注意到许多失败的 HTTP requests responses 包含状态代码 0 和 -1。状态码 1 和 0 有什么区别?

根据 http 规范,我知道这些不是“真实”状态代码,所以我试图找出这些代码之间的区别,以便我至少可以通知用户出现“无法连接到”之类的消息有问题服务器'或类似的东西。

Angular.io 似乎没有关于这些的文档,但我能够在 legacy angular documentation 上找到它:

此外,小于 -1 的状态代码被归一化为零。 -1 通常意味着请求被中止,例如使用 config.timeout

这是否也适用于较新版本的 Angular?我正在使用 Angular 4.0.1。

【问题讨论】:

文档说是服务器返回的代码。 @GünterZöchbauer 是的,这就是文档所说的......这没有多大意义,因为 0 和 -1 不是真正的 Http 状态代码。 :( 您使用的是什么服务器。服务器仍然可以返回非标准代码。 我使用的是最新版本的 IIS (10)。我用谷歌搜索并找不到有关这些来自 IIS 的代码的任何信息。我仍然倾向于相信它来自 Angular。我想我必须从 github 上获取 Angular 的源代码并手动 grep 状态代码,这样我才能回答我自己的问题。 :) 【参考方案1】:

我正在寻找相同的答案,但我确定的是,如果您的 Angular 应用程序无法从服务器获得响应,它将设置状态代码 0 或 -1(因为 http-status 代码是从服务器接收)。

我注意到状态 -1 用于超时呼叫以及未发送实际请求(例如,预检选项请求失败 - 由于没有互联网或 CORS 问题)。

我不确定状态 0 何时返回,但我已经遇到过。我不知道这两种状态是否在 Angular 的整个版本中混合在一起。

【讨论】:

如果你碰巧遇到了这个问题——并且你正在通过 AWS 中的 API Gateway 运行——你可能需要查看这个线程 ***.com/questions/35190615/…

以上是关于Angular Http 请求状态码 0 和 -1 是啥?的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 状态码 0 是不是有任何意义?

Angular 4 和 OAuth - 拦截 401 响应,刷新访问令牌并重试请求

http和https响应的状态码都有哪些

复习HTTP状态码+301和302

使用 apollo 在 Angular 中捕获 http 状态代码

Angular 7 - 如何在某些响应状态代码上重试 http 请求?