识别 Javascript 中的网络错误

Identify network error in Javascript

本文关键字:网络 错误 Javascript 识别      更新时间:2023-09-26

上下文:


编写一个基于浏览器的工具,点击许多第三方 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并做这样的事情来查看是否存在网络错误。但是,由于这些是跨域请求,因此在预飞行步骤中失败。

到目前为止,我所做的是一个黑客。这是代码。基本上动态创建一个脚本标签,使用 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。

问题

在给定的约束下,有没有办法确定成功或 失败。就我而言,成功或失败是你能不能 是否访问 URL。

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

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

https://github.com/sajit/healthcheck_api <-- 铬扩展