web-dev-qa-db-ja.com

Angular.js $ httpインターセプト "net :: ERR_CONNECTION_REFUSED"

$http'sインターセプターを使用して、Webサイトの汎用エラーハンドラーを記述しようとしていますが、やりたいことを実行できないようです。

インターセプターを'response'および'responseError'に配置しましたが、サーバーがオフラインであるか応答していない場合(net :: ERR_CONNECTION_REFUSED)は呼び出されません。私はこれがなぜ起こるのか理解しています、傍受する応答がありません。

リクエストごとに$httpPromiseerrorコールバックをリッスンする以外に、これらのエラーをキャッチする一般的な方法があるかどうかを知りたいです。

38
SBSTP

ResponseErrorのステータスを確認できます。 APIが0(Angular 1.3.18まで)または-1(Angular 1.3.19以降))のオフラインの場合:

angular.module("services.interceptor", arguments).config(function($httpProvider) {
     $httpProvider.interceptors.Push(function($q) {
        return {
          responseError: function(rejection) {
                if(rejection.status <= 0) {
                    window.location = "noresponse.html";
                    return;
                }
                return $q.reject(rejection);
            }
        };
    });
});
64
Ali Habibzadeh