检查是否可以使用JavaScript访问远程网站

时间:2017-03-09 11:57:54

标签: javascript xmlhttprequest cors

我想使用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服务器已启动并且已回答,只有特定资源已关闭。

如何修改我的功能,检查远程地址的连接性?

1 个答案:

答案 0 :(得分:1)

为了向网站发出XML请求,请确保他们有Access-Control-Allow-Origin: * / or your domain否则它将无效。