【问题标题】:Why is AngularJS error message empty on error handling?为什么错误处理时 AngularJS 错误消息为空?
【发布时间】:2015-08-06 12:11:04
【问题描述】:

我正在使用 AngularJS 代码向服务器发出请求。成功后它工作正常,但是当我将请求重定向到其他域时故意引发 CORS 问题时,会调用错误处理函数但 errorData 为空。在 Chrome 中,当我调试时,我可以看到错误功能被命中,并且我收到消息“请求的资源上不存在‘Access-Control-Allow-Origin’标头。”在控制台中,但我无法从代码中访问它。如何记录这个错误?

RemoteService.doRequestPromise().then(
function(resp) {
    LEService.logIt(resp);
    if (status != 200) {
        LEService.error(resp);
    }
},
function(errorData) {
    LEService.error({ 'err': errorData });
}).finally(function() {
    usSpinnerService.stop('spin1');
});

【问题讨论】:

  • 我认为这是因为当 Chrome 以 CORS 错误抢占请求时,底层的XMLHttpRequest 没有收到任何信息。
  • 以下帖子似乎回答了您的问题(恐怕是负面的):stackoverflow.com/questions/4844643/…

标签: javascript angularjs error-handling promise


【解决方案1】:

这是 Angular 为您提供的 failed CORS request:

{
  "data": null,
  "status": 0,
  "config": {
    "method": "GET",
    "transformRequest": [
      null
    ],
    "transformResponse": [
      null
    ],
    "url": "https://some.site/thing",
    "headers": {
      "Accept": "application/json, text/plain, */*"
    }
  },
  "statusText": ""
}

与 CORS 无关,但您的状态为 0 和空的 statusText。可能不会有很多其他情况下您会收到0 的状态,但如果您绝对需要确定这是一个 CORS 错误,那么值得进行更多研究。

【讨论】:

    猜你喜欢
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    相关资源
    最近更新 更多