Angular $ http.get() - 如何捕获"访问控制"错误

时间:2017-11-15 15:14:48

标签: angularjs error-handling cors

我使用$ http.get()提交API请求,只要我在测试时在浏览器中启用CORS就可以正常工作。当然,那只是一个绑带。

我找到了这篇文章: Angular $http.get: How to catch all the errors?

让我的代码设置为then()。catch(),当catch代码按预期执行时,仍会抛出错误:

  

XMLHttpRequest无法加载' url here'由于访问控制检查。

即使我为了开发手动禁用CORS,我仍然会遇到401错误,尽管我遇到了catch()。

目标是防止旧的"红色文字"控制台中的错误,只需通过向用户发出警报来处理它们。

1 个答案:

答案 0 :(得分:0)

当您在浏览器中发送http请求时,它会首先发送名为preflight的OPTIONS请求。如果预检请求的响应不包含Access-Control-Allow-Origin标题,则浏览器会阻止请求。

此预检请求对Javascript是透明的。因此,对于每个ajax调用,如果目标是跨域的,浏览器会发送两个请求。

即使您发现错误,如果预检请求失败,浏览器也会在控制台中报告网络错误。