Angular 1.5,错误的响应状态总是-1
Angular 1.5, response status on error is always -1
我在调用API时遇到问题,让我先解释一下架构。
整个字体端应用程序 os AngularJS 基于 1.5,hosted 在如下域中:
app1.mydomain.com、app2.mydomain.com、appN.mydomain.com
我有一个 API(基于 Symfony2 - FOS Rest)开启:
api.mydomain.com
服务器是Nginx,php5(fpm),CORS开放。
现在,让我们描述问题:
我正在为某些数据调用 API 端点:
var data = {someProperty: someValue};
var $p = $resource($rootScope.apiDomain + '/some/endpoint', {}, {
get: {
method: 'GET'
}
}).get(data).$promise;
var request = $q.all({request: $p});
return request
.then(function (response) {
// code on success
}, function (error) {
// code on error
});
现在假设服务器的响应是 400 或 500 中的任何一个,那么在 ResponseError(拦截器)中我应该将此代码作为 'status' 值
responseError: function (response) {
if (403 === response.status) {
// something on 403
}
// do something on other codes
return $q.reject(response);
}
无论后端服务器发回哪个响应码,response
对象包含以下内容:
Object {data: null, status: -1, config: Object, statusText: ""}
但是...我已经看到 这基本上就是我现在所拥有的...
所以:
- 有什么办法可以解决这个问题吗(我有,比方说我在前后配置方面都具有完全的能力os)
- 如果"solvable"不容易,那怎么办?
嗯...
我终于成功了 - nginx.opencors 配置
解决方案:
(之前)
add_header 'Access-Control-Allow-Origin' "*";
响应对象:{data: Object, status: -1, config: Object, statusText: ""}
(之后)
add_header 'Access-Control-Allow-Origin' "*" always;
响应对象:{data: Object, status: 403, config: Object, statusText: "Forbidden"}
我在调用API时遇到问题,让我先解释一下架构。
整个字体端应用程序 os AngularJS 基于 1.5,hosted 在如下域中: app1.mydomain.com、app2.mydomain.com、appN.mydomain.com
我有一个 API(基于 Symfony2 - FOS Rest)开启:
api.mydomain.com
服务器是Nginx,php5(fpm),CORS开放。
现在,让我们描述问题:
我正在为某些数据调用 API 端点:
var data = {someProperty: someValue};
var $p = $resource($rootScope.apiDomain + '/some/endpoint', {}, {
get: {
method: 'GET'
}
}).get(data).$promise;
var request = $q.all({request: $p});
return request
.then(function (response) {
// code on success
}, function (error) {
// code on error
});
现在假设服务器的响应是 400 或 500 中的任何一个,那么在 ResponseError(拦截器)中我应该将此代码作为 'status' 值
responseError: function (response) {
if (403 === response.status) {
// something on 403
}
// do something on other codes
return $q.reject(response);
}
无论后端服务器发回哪个响应码,response
对象包含以下内容:
Object {data: null, status: -1, config: Object, statusText: ""}
但是...我已经看到
所以:
- 有什么办法可以解决这个问题吗(我有,比方说我在前后配置方面都具有完全的能力os)
- 如果"solvable"不容易,那怎么办?
嗯...
我终于成功了 - nginx.opencors 配置
解决方案:
(之前)
add_header 'Access-Control-Allow-Origin' "*";
响应对象:{data: Object, status: -1, config: Object, statusText: ""}
(之后)
add_header 'Access-Control-Allow-Origin' "*" always;
响应对象:{data: Object, status: 403, config: Object, statusText: "Forbidden"}