2016-06-01 7 views
0

anugular.jsで$ httpモジュールを使用すると、ステータスコードが-1になることがあります。

は、それらの理由を区別するためにそのステータスコードについて詳細を取得する方法はあります...、CORSコールがなど、失敗タイムアウト:

は、私のようなこのステータスコードを取得するための多くの理由があります知っていますか?

答えて

0

HTTP -1は、要求が中止されたことを示す角度ベースの応答コードです(see the docs)。残念なことに、この仕様ではそれ以外の情報はそれほど多くはないようです。 $httpBackend$httpのソースコードに

ダイビングは、要求が角度によって中止された場合-1のステータスコードがしか返されることを示している(または要求が中断した場合/エラーすなわち、はい、CORSエラー)するようだが、他の情報は与えられない(少なくとも消耗しにくい情報)。 This lineはそれを裏付けるようです。

したがって、-1のエラーは不透明なエラーであり、何が原因かを判断することはできません(自分でキャンセルをトリガーしない限り)。

明確にするには、問題を診断する方法がいくつかあります。

  1. navigator.onLinedocs)です。これにより、実際にネットワークに接続できるかどうかを判断できます。これがfalseを返す場合、タイムアウトはあなたの終了によるものであることがわかります。サーバーと通信するときにクライアントによって発生したタイムアウトは、HTTP 408として返されます。これにより、-1/0のHTTPステータスコードがタイムアウトに起因するものかどうかを判断できます。
  2. エラーがCORSまたは要求をキャンセルする拡張機能に起因する場合は、シッククライアントとしてはあまりできないので、このユースケースをサポートする価値はないと私は確信しています。どちらの方法でも、上記の方法が失敗し、自分でリクエストをキャンセルしなかった場合は、上記の理由の1つになることが推測できます。