Angular 1.5,错误响应状态始终为-1

时间:2016-08-20 14:00:32

标签: angularjs symfony nginx cors angular-resource

我在调用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这基本上就是我现在拥有的......

所以:

  1. 有没有办法解决这个问题(我已经,让我们说任何方式配置后面和前面的完全可能性)
  2. 如果不能解决问题"很容易,那怎么样?

1 个答案:

答案 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"}