我想使用 JavaScript 检查远程网站是否可访问。
<button onclick="check()">check</button>
<script>
function check(ip)
{
var xhr = new XMLHttpRequest();
var target = "https://letsencrypt.org/";
var rndNum = Math.round(Math.random() * 10000);
xhr.open('HEAD', target + "?rand=" + rndNum, true);
xhr.send();
xhr.addEventListener("readystatechange", processRequest, false);
function processRequest(e)
{
if (xhr.readyState == 4)
{
if (xhr.status >= 200 && xhr.status < 304)
{
alert('up');
}
else
{
alert('down');
}
}
}
}
</script>
此代码有效,但仅适用于本地目标
,因为跨源请求被阻止。代码可以执行here并且,当单击该按钮时,JavaScript 控制台会记录:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://letsencrypt.org/?rand=6236. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). (unknown)
我相信我已经读到这也应该以某种方式与远程地址一起使用。
一般来说,如果 Web 服务器应答,我将其视为可访问,甚至 404
返回代码也告诉我 Web 服务器已启动并应答,只是特定资源已关闭。
如何修改我的函数来检查远程地址的连接性?
最佳答案
为了向网站发出 XML 请求,请确保他们具有 Access-Control-Allow-Origin: */或您的域
,否则它将无法工作。
关于javascript - 检查是否可以使用 JavaScript 访问远程网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42694827/