【发布时间】:2017-08-10 04:33:06
【问题描述】:
我在 angular $http 中发现了一个奇怪的问题。
我的请求代码
$http({
method: 'GET',
url: 'http://localhost:8080/server/'
}).then(function (response) {
console.log(response.status);
},function(response){
console.log(response.status);
});
在此之前,我设置了请求头
app.factory('myInterceptor', ['$q', function($q) {
return {
request: function(config) {
config.headers['Authorization'] = 'Basic *';
return config;
},
requestError: function(rejectReason) {
return $q.reject(rejectReason);
},
response: function(response) {
return $q.resolve(response);
},
responseError: function(response) {
console.log(response.status);
return $q.reject(response);
}
};
}])
.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('myInterceptor');
}]);
这个页面不存在,所以它应该返回404,但它返回-1。
如果删除此行config.headers['Authorization'] = 'Basic *';,则返回正确的404。
谁能帮帮我,这是我的演示页面http://plnkr.co/edit/GhghMNCPcITwXCINISW5?p=preview,非常感谢
【问题讨论】:
-
您确定您的服务器返回 404 吗?检查网络面板以获取服务器返回的状态代码。很可能连接超时,服务器没有响应状态码。
-
浏览器地址栏中的网址是什么?
-
@NikhilBhandari 是的,我确定,我的 chrome 返回 404,但
console.log在角码中返回 -1。 -
这不能回答我的问题。这是一个简单的问题,而且很重要,因为它可能是一个 CORS 问题。你为什么不直接回答?通过查看您的 plunkr,我无法知道答案。您的服务器可能启用了 CORS,但未授权 Authorization 标头。