[英]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.