繁体   English   中英

为什么我的catch块无法捕获“协议方案仅支持跨源请求:http…”

[英]Why Is My catch Block Not Catching “Cross origin requests are only supported for protocol schemes: http…”

我有一个JavaScript脚本,该脚本正在使用jquery post命令登录服务器并获取令牌。 我已经将代码包装在一个try块中,并带有一个catch块,如下所示:

catch (error)
{
  alert(error.message); 
}

我的代码运行良好,但为了对其进行全面测试,我有意更改了协议,以便url如下所示:

"htt://some.domain:8080/jsonrpc"

我的代码未捕获错误并显示警报。 而是,Chrome控制台显示以下错误:

XMLHttpRequest无法加载htt://some.domain:8080 / jsonrpc。 跨源请求仅支持以下协议方案:http,数据,chrome,chrome扩展名,https,chrome-extension-resource。

我期望某种形式的url异常,而不是控制台中的错误。

其他故意错误(例如不正确的密码)的结果将导致捕获异常。

谢谢

因为Ajax是异步的。 该错误发生在try / catch块之外。

通过将状态更改为0 ,可以在XMLHttpRequest中检测到此类错误。 (尽管此状态代码还涵盖了其他一些错误状态,所以您可能不太准确)。

当状态为0时,将触发可传递给jQuery ajax的error处理程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM