使用Java识别网络错误

问题描述 投票:1回答:1

上下文:


编写一个基于浏览器的工具,该工具可以访问多个第三方URL,以查看是否可以访问该URL

约束

1. Has to be browser based 
2. I don't own the URL list (read it from a server and is maintained by someone else )
3. Some of the URLs (ie the servers) are not CORs enabled.

传统上,我会使用XMLHttpRequest并执行类似this的操作来查看是否存在网络错误。但是,由于这些请求是跨域请求,因此在预检步骤中失败。

到目前为止,我所做的只是一个hack。这是代码。基本上是动态创建一个脚本标签,以src作为我想要的网址。

var createScript = function(whitelist){
    var src = whitelist.url;
    var script = document.createElement('script');
    script.setAttribute('src', src);
    script.onload = function () {

        whitelist.success = true;
        $scope.$digest();
        return;
    };
    script.onerror = function (foo) {
            console.error(src,' ',foo);
        return;
    };
    angular.element(document.body).append(script);
};

我查看了传递给onerror的对象,但无法从中获取任何有用的信息,这将有助于我理解为什么此操作失败。同样,网络错误和403都击中了onerror处理程序。就我的目的而言,访问URL的成功或失败取决于网络错误,而不是例如获取403。

问题

在给定的约束下,有一种方法可以识别成功或失败。就我而言,成功或失败取决于您是否可以是否访问URL。

javascript network-protocols
1个回答
0
投票

我最终为此编写了一个可安装的chrome-app和chrome扩展程序。根据您的用例,可以使用任何一种。如果您想从第三方网页使用相同的功能,则chromme扩展名会更多。

https://github.com/sajit/clienthealthcheck

https://github.com/sajit/healthcheck_api

© www.soinside.com 2019 - 2024. All rights reserved.