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: ""}

但是...我已经看到 这基本上就是我现在所拥有的...

所以:

  1. 有什么办法可以解决这个问题吗(我有,比方说我在前后配置方面都具有完全的能力os)
  2. 如果"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"}