401 non autorisé d'erreur de manipulation dans AngularJS

Je suis très novice dans AngularJS, et maintenant passé 3 jours à trouver un moyen de gérer 401 état. J'ai essayé d'intercepteurs, à l'aide de $http, en utilisant $de ressources...mais rien ne fonctionne. Mes appels app JSONP appel sur le même serveur. quand l'erreur se produit, elle est prise dans erreur de la fonction de rappel. mais le statut est toujours 0 et la réponse est non défini.

Tout d'abord, j'ai essayé de l'intercepteur

app.config(['$httpProvider', function($httpProvider) {
$httpProvider.responseInterceptors.push(['$q', function($q) {
    return function(promise) {
        return promise.then(function(response) {
            console.log('success in interceptor');
            return response; 
        }, function(response) {
            console.log('error in interceptor');
            console.log(response);
            if (response.status === 401) {
                response.data = { 
                    status: false, 
                    description: 'Authentication required!'
                };
                return response;
            }
            return $q.reject(response);
        });
    }
}]);
}]);

Deuxième, a également essayé de contrôleurs à l'aide de $ressource

  $scope.fetchData = function(fromDate, toDate){
        Cancel.get({from: fromDate, to: toDate, perPage: 99999},
                    function(data){                            
                      $scope.cancels  = $scope.filteredCancels = data.data;
                      $scope.search();
                    },
                    function(response) {
                      $scope.errorMessage = '<h4>Error : '+response.status+'</h4>';
                      window.location = "/";
                    });              
      }; 

Troisième, essayé d'utiliser $http au lieu de $ressource

  $scope.fetchData = function(fromDate, toDate){
     $http.jsonp('http://host:8900/api/cancellations?callback=JSON_CALLBACK')
         .success(function(data, status, headers, config) {
             console.log(status);
          })
         .error(function(data, status, headers, config) {
             console.log(status);              
          }; 

Voici informations d'en-tête pour le JSONP appel

Request URL:http://host:8900/api/cancellations?callback=angular.callbacks._0
Request Method:GET
Status Code:401 Unauthorized
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Cookie:__utma=149207145.339724205.1374885003.1377550245.1378313049.3; __utmc=149207145; __utmz=149207145.1378313049.3.2.utmcsr=cyphersmart.qc3deva.electricmail.com:8900|utmccn=(referral)|utmcmd=referral|utmcct=/; remember_username=elie.kim%40electricmail.com; PHPSESSID=gdoemlp5jltqq62etc5gfuh653; cookie=cookiecheck; __utma=1.789184132.1378340585.1378499390.1378504453.10; __utmb=1.3.10.1378504453; __utmc=1; __utmz=1.1378340585.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Host:host:8900
Referer:http://host:8900/reports/cancels/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Ubuntu Chromium/25.0.1364.160 Chrome/25.0.1364.160 Safari/537.22
Query String Parametersview sourceview URL encoded
callback:angular.callbacks._0
Response Headersview source
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:keep-alive
Content-Type:application/json; charset=utf-8
Date:Fri, 06 Sep 2013 22:02:13 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=20
Pragma:no-cache
Server:nginx/0.7.65
Transfer-Encoding:chunked

Je ne pouvais pas trouver un moyen de traiter la non autorisée d'état 401, j'ai attaché toutes les choses bien. Il serait très apprécié si je peux obtenir une astuce ou bon conseil.

si vous accédez à votre URL dans le navigateur, ce qui se passe?
Quelle est la version angulaire utilisez-vous? Ceci est important parce que la responseInterceptors changé en 1.2
ma version est v1.0.6. est-ce la raison?
il attrape tout ajax d'erreur à l'exception de 200 ou 300. ce que je suis sufferfing est pourquoi il ne peut pas attraper 401 code d'état.
Trouvé la raison pour laquelle AngularJs ne pas les attraper 401 statut, il n'est pas censé attraper 401 lorsqu'il appelle JSONP demande. Dès que le changement de la méthode "GET", elle l'attrape.

OriginalL'auteur Elie Kim | 2013-09-06