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
现在,让我们来描述一下问题:
我正在为某些数据调用 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的主要内容,如果未能解决你的问题,请参考以下文章
响应状态 200,但在 Angular 8 中仍然出现 CORS 错误 [重复]
加载资源失败:服务器使用 Angular 响应状态为 404 (),使用 GitHub Pages 部署
加载资源失败:服务器响应状态为 401(未授权)/App/AngularJS/angular.min.js