我在调用API时遇到问题,让我先解释架构。
基于AngularJS 1.5的整个字体结束应用程序,托管在以下域上: 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(拦截器)中,我应该将此代码作为& #39;状态'值
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: ""}
然而......我已经看过THIS ANSER这基本上就是我现在拥有的......
所以:
答案 0 :(得分:0)
嗯...
我终于成功完成了这项工作 - nginx.opencors config
解决方案:
(前)
add_header 'Access-Control-Allow-Origin' "*";
ResponseObject:{data: Object, status: -1, config: Object, statusText: ""}
(后)
add_header 'Access-Control-Allow-Origin' "*" always;
ResponseObject:{data: Object, status: 403, config: Object, statusText: "Forbidden"}