识别Javascript中的网络错误

时间:2014-11-21 23:29:46

标签: javascript cors network-protocols

上下文


编写一个基于浏览器的工具,该工具可以访问许多第三方网址,看看我们是否可以点击该网址

约束

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之类的操作来查看是否存在网络错误。但是,由于这些是跨域请求,因此在飞行前步骤失败。

到目前为止我所做的是黑客攻击。这是代码。基本上动态创建脚本标记,src作为我想要的url。

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。

问题

  

有了给定的约束,有一种方法可以识别成功或   失败。就我而言,成功或失败是否可以   是否访问网址。

1 个答案:

答案 0 :(得分:0)

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

https://github.com/sajit/clienthealthcheck< - chrome app

https://github.com/sajit/healthcheck_api< - chrome extension