知识产权基金及;JavaScript:从localhost:8080检查404状态,以在浏览器中确定是否启用了本地IPFS节点

知识产权基金及;JavaScript:从localhost:8080检查404状态,以在浏览器中确定是否启用了本地IPFS节点,javascript,browser,userscripts,tampermonkey,ipfs,Javascript,Browser,Userscripts,Tampermonkey,Ipfs,我不熟悉IPFS,也不熟悉JavaScript,但我已经设法在我的浏览器中创建了一个基本的IPFS重定向用户脚本:每当地址类型为*://*/IPFS/*或*://*/ipns/*时,脚本就会启动并重新路由到http://localhost:8080/ 但是,有时本地IPFS节点没有运行,因此重新路由被发送到Nothiness,因为localhost:8080上没有发生任何事情。所以我的问题是,如果有办法让JS用户脚本在浏览器中(在我的例子中:Safari w/Tampermonkey)确定是否可

我不熟悉IPFS,也不熟悉JavaScript,但我已经设法在我的浏览器中创建了一个基本的IPFS重定向用户脚本:每当地址类型为
*://*/IPFS/*
*://*/ipns/*
时,脚本就会启动并重新路由到
http://localhost:8080/

但是,有时本地IPFS节点没有运行,因此重新路由被发送到Nothiness,因为localhost:8080上没有发生任何事情。所以我的问题是,如果有办法让JS用户脚本在浏览器中(在我的例子中:Safari w/Tampermonkey)确定是否可以访问localhost:8080。如果无法访问,脚本将不执行任何操作,如果可以访问,它将启动重定向

当本地IPFS节点处于活动状态时,localhost:8080返回“404未找到页面”

…当节点处于非活动状态时,Safari无法访问其中的任何内容:

因此,最简单的事情(可能)是使用JavaScript编写相当于
curl-o/dev/null--silent--head--write出“%{http_code}\n”localhost:8080
:如果返回“404”,IPFS处于活动状态,脚本将重新路由;如果返回“000”,则IPFS处于非活动状态,脚本将不执行任何操作


那么,如何使用JavaScript实现这一点呢?谢谢您的帮助。

您可以使用XMLHttpRequest查询服务器。 例如


Github上的一个用户已经给了我一个快速的解决方案;请参阅…它正在检查IPFS WebUI的一个png文件
var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
                // Request finished; either succesful or via timeout
                alert(xhr.status);
        }
};

xhr.open("POST", "http://localhost:8080", true);
xhr.timeout = 4000; // Set timeout to 4 seconds (4000 milliseconds)
xhr.ontimeout = function () { alert("Timed out!!!"); }
xhr.send("");