【问题标题】:Angular HTTP: Status -1 and CORSAngular HTTP:状态 -1 和 CORS
【发布时间】:2016-05-26 21:55:17
【问题描述】:

在我们的 Angular 应用程序中,有时我们会收到返回给我们的 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 吗?

【问题讨论】:

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


    【解决方案1】:

    当请求中止或超时时,请求以错误状态-1 着陆。

    取自the official docs

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

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

    【讨论】:

      【解决方案2】:

      根据我的经验,-1 状态最常见的原因是浏览器因违反 Same Origin Policy. 而阻止了响应

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

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

      Use CORS to allow cross-origin access.

      【讨论】:

        猜你喜欢
        • 2016-12-17
        • 2017-09-25
        • 2018-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-23
        • 1970-01-01
        • 2018-10-27
        相关资源
        最近更新 更多