gpt4 book ai didi

angularjs - Angular jsonp 返回状态代码 0 而不是 401

转载 作者:行者123 更新时间:2023-12-01 06:32:18 24 4
gpt4 key购买 nike

我有一个 angular 应用程序,它调用一个安全的休息端点,并在访问时返回 401。我在我的应用程序中定义了一个拦截器,以便捕获错误,并且在 401 时应用程序应该重定向到登录页面。这一切听起来很简单,但是当我在浏览器中运行它时,我的错误响应中出现状态代码 0。但是在我的 Chrome 控制台中,我可以看到一个日志,上面写着请求的 url 导致 401。

我需要补充一点,JS 文件托管在 localhost:9000 上,提供 401 响应的应用程序位于 localhost:8080 上。怎么了?

    angular.module('ndbAdminUIApp', ['ngResource']).config(['$routeProvider', '$locationProvider', '$httpProvider', function ($routeProvider, $locationProvider, $httpProvider) {
$routeProvider.when('/', {
templateUrl : 'views/main.html',
controller : 'MainCtrl'
}).when('/login', {
templateUrl : 'views/login.html',
controller : 'LoginCtrl'
}).otherwise({
redirectTo : '/'
});

var interceptor = ['$location', '$q', function ($location, $q) {
function success(response) {
return response;
}

function error(response) {
if (response.status === 401) {
$location.path('#login');
return $q.reject(response);
}
else {
return $q.reject(response);
}
}

return function (promise) {
return promise.then(success, error);
};
}];

$httpProvider.responseInterceptors.push(interceptor);
}])


angular.module('ndbAdminUIApp').factory('ndbSystemService', function($http) {
return {
heartBeat: function() {
$http.jsonp('http://localhost\:8080/ndb-service/r/system/hb?callback=JSON_CALLBACK');
},
};
});

最佳答案

事实证明,Angular 在使用 JSONP 时无法真正找出响应代码,这不是 Angular 的错,因为它得到的只是一个函数调用。因此,对于这样做的人来说,唯一的选择是将网页和休息服务放在同一主机上。

关于angularjs - Angular jsonp 返回状态代码 0 而不是 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18863122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com