小编use*_*305的帖子

如何在Javascript中检测XMLHttpRequest()的其他类型的错误与交叉原点(CORS)错误

我试图检测XMLHttpRequest()由于交叉原始错误而不是错误请求而失败.例如:

    ajaxObj=new XMLHttpRequest()
    ajaxObj.open("GET", url, true); 
    ajaxObj.send(null);
Run Code Online (Sandbox Code Playgroud)

考虑4个网址案例:

情况1: url是正确设置access-control-allow-origin的有效地址

  • 示例:http://192.168.8.35Access-Control-Allow-Origin: *在标头中设置了一个服务器
  • 这很容易检测为ajaxObj.readyState == 4和ajaxObj.status == 200

情况2: url是现有服务器上的无效地址

  • 示例:http://xyz.google.com服务器响应的位置,但它不是有效请求
  • 这导致ajaxObj.readyState == 4和ajaxObj.status == 0

情况3: url是一个不存在的服务器IP地址

  • 示例:http://192.168.8.6在我的本地网络上没有任何响应
  • 这导致ajaxObj.readyState == 4和ajaxObj.status == 0

案例4: URL是一个有效的地址在访问控制允许来源是设置

  • 示例:http://192.168.8.247我在标头中没有 Access-Control-Allow-Origin: *设置的服务器
  • 这导致ajaxObj.readyState == 4和ajaxObj.status == 0

问题是:如何区分案例4(访问控制允许来源错误)和案例2和3?

在案例4中,Chrome调试控制台显示错误:

XMLHttpRequest cannot load http://192.168.8.247/. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

如何在Javascript中识别该错误?

我试图找到一些迹象,ajaxObj但与案例2和3相比似乎没有什么不同.

这是我使用的简单测试:

<!DOCTYPE html PUBLIC "-//W3C//DTD …
Run Code Online (Sandbox Code Playgroud)

javascript ajax xmlhttprequest cors

51
推荐指数
4
解决办法
3万
查看次数

标签 统计

ajax ×1

cors ×1

javascript ×1

xmlhttprequest ×1