在angular $ http中,我可以获得有关-1状态代码的详细信息吗?

时间:2016-06-01 17:12:41

标签: angularjs

在anugular.js中使用$ http模块有时会导致-1状态代码。

我知道获取此状态代码的原因有很多,例如:超时,CORS呼叫失败等等......

有没有办法获取有关该状态代码的更多详细信息,以区分这些原因?

1 个答案:

答案 0 :(得分:0)

HTTP -1是基于角度的响应代码,表示请求已中止(see the docs)。不幸的是,该规范似乎并没有提供更多的信息。

潜入$httpBackend$http的源代码似乎表明只有在请求被Angular中止时(或者如果请求中止),才会返回状态代码-1 /错误,即是,CORS错误),但没有给出其他信息(至少不容易消耗信息)。 This line似乎证实了这一点。

所以结果似乎是:不,-1错误是不透明的错误,你无法确定导致它们的原因(除非你自己触发取消)。

要说清楚,有几种方法可以诊断问题。

  1. 您可以navigator.onLinedocs)。这将让您确定是否能够实际连接到网络。如果返回false,那么您知道超时是由于您的结束。客户端与服务器通信时导致的超时将以HTTP 408的形式返回。这将让您确定http状态代码是否为-1/0是否是由于超时。
  2. 如果错误是由CORS或延期取消请求引起的,那么您作为胖客户端所做的事情并不多,所以我不确定它是否值得支持这种使用 - 案件。无论哪种方式,如果上述方法失败并且您自己没有取消请求,您可以推断出问题将是上述原因之一。