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

Posted

技术标签:

【中文标题】Angular 1.5,错误响应状态始终为-1【英文标题】:Angular 1.5, response status on error is always -1 【发布时间】:2016-12-27 13:19:00 【问题描述】:

我在调用 API 时遇到了一个问题,让我先解释一下架构。

基于 AngularJS 1.5 的整个字体端应用程序,托管在以下域中: app1.mydomain.com、app2.mydomain.com、appN.mydomain.com

我有一个开启的 API(基于 Symfony2 - FOS Rest):

api.mydomain.com

服务器是nginxphp5(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(拦截器)中,我应该将此代码作为“状态”值获取

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

所以:

    有什么办法可以解决这个问题(我可以说完全有可能以任何方式同时配置前后) 如果不能轻易“解决”,那该怎么办?

【问题讨论】:

这看起来像是一个 CORS 问题。控制台说什么?网络面板对响应有何看法? 是的,它会是 CORS。确保你在前端和后端设置 CORS,如果你用谷歌搜索,会有大量信息,但为了让你开始,这里有一个类似的问题 ***.com/questions/21455045/… 感谢您的回复,基本上正如我所说,我确实打开了 CORS,如下所示:pastebin@JBNizet 控制台显示正确的 ResponseCode(即 403) 【参考方案1】:

嗯……

我终于设法让它工作了 - 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"

【讨论】:

以上是关于Angular 1.5,错误响应状态始终为-1的主要内容,如果未能解决你的问题,请参考以下文章

Angular $http 错误回调响应始终未定义

响应状态 200,但在 Angular 8 中仍然出现 CORS 错误 [重复]

加载资源失败:服务器使用 Angular 响应状态为 404 (),使用 GitHub Pages 部署

加载资源失败:服务器响应状态为 401(未授权)/App/AngularJS/angular.min.js

Angular 中的响应式页脚,带有始终位于页面底部的引导程序。不粘

加载资源失败:服务器响应状态为 404 (Not Found) angular js + ionic