Angular HTTP:状态-1和CORS

时间:2016-02-15 20:42:16

标签: angularjs http cors http-status-codes angular-http

在我们的角度应用程序中,有时我们会将http状态-1返回给我们。状态-1发生在关闭的弹出窗口上,因此用户不会受到影响,只会影响我们的日志。

我试图通过

来处理它
      switch (response.status) {
        case 0:
          break;
        case -1:
          break;
        case 401:
          localStorageService.clearAll();
          redirectToUrlAfterLogin.url = $location.path();
          $location.path('/login');

AngularJS Issue #12920

中建议的内容

我们肯定会减少登录,但仍有一些HTTP -1状态代码。我应该采用不同的方式处理-1?

2 个答案:

答案 0 :(得分:2)

当请求中止或超时时,请求将作为错误返回,状态为-1。

取自the official docs

  

此外,小于-1的状态代码归一化为零。 -1通常意味着请求被中止,例如使用config.timeout

     

timeout – {number|Promise} - 超时(以毫秒为单位),或承诺   应该在解决时中止请求。

答案 1 :(得分:1)

根据我的经验,{{1}}状态的最常见原因是浏览器因违反Same Origin Policy.

而阻止了响应

出于安全原因,浏览器会限制从脚本中发起的跨源HTTP请求。例如,XMLHttpRequestFetch遵循same-origin policy。因此,使用XMLHttpRequestFetch 的网络应用程序只能向自己的域发出HTTP请求。为了改进Web应用程序,开发人员要求浏览器供应商允许跨域请求。

跨域资源共享(CORS)机制为Web服务器提供跨域访问控制,从而实现安全的跨域数据传输。现代浏览器在API容器中使用CORS(例如XMLHttpRequestFetch)来降低跨源HTTP请求的风险。

请参阅Use CORS to allow cross-origin access.