Angular HTTP:状态 -1 和 CORS
Posted
技术标签:
【中文标题】Angular HTTP:状态 -1 和 CORS【英文标题】:Angular HTTP: Status -1 and 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 吗?
【问题讨论】:
【参考方案1】:当请求中止或超时时,请求以错误状态-1 着陆。
取自the official docs:
此外,小于 -1 的状态代码被归一化为零。 -1 通常意味着请求被中止,例如使用
config.timeout
。
timeout – number|Promise
– 以毫秒为单位的超时,或承诺 解决后应该中止请求。
【讨论】:
【参考方案2】:根据我的经验,-1
状态最常见的原因是浏览器因违反 Same Origin Policy. 而阻止了响应
出于安全原因,浏览器会限制从脚本中发起的跨域 HTTP 请求。例如,XMLHttpRequest 和 Fetch 跟在 same-origin policy 后面。因此,使用 XMLHttpRequest 或 Fetch 的 Web 应用程序只能向自己的域发出 HTTP 请求。为了改进 Web 应用程序,开发人员要求浏览器供应商允许跨域请求。
跨域资源共享 (CORS) 机制为 Web 服务器提供跨域访问控制,从而实现安全的跨域数据传输。现代浏览器在 API 容器中使用 CORS(例如 XMLHttpRequest 或 Fetch)来降低跨域 HTTP 请求的风险。
见Use CORS to allow cross-origin access.
【讨论】:
以上是关于Angular HTTP:状态 -1 和 CORS的主要内容,如果未能解决你的问题,请参考以下文章
Apache CORS OPTIONS 请求状态 501 错误
CORS 以某种方式阻止我的 Angular 和 Nestjs 应用程序进行通信
CORS 策略:对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态
AngularJS $http 从失败的 CORS 请求返回状态码 0