我想使用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>
此代码有效,但仅适用于本地target
,因为阻止了跨源请求。代码可以执行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服务器已启动并且已回答,只有特定资源已关闭。
如何修改我的功能,检查远程地址的连接性?
答案 0 :(得分:1)
为了向网站发出XML请求,请确保他们有Access-Control-Allow-Origin: * / or your domain
否则它将无效。