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

标签 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>

此代码有效,但仅适用于本地目标,因为跨源请求被阻止。代码可以执行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/

相关文章:

ruby-on-rails - 如何使用 rails、nginx 和乘客配置 `Access-Control-Allow-Origin`?

javascript - 删除 <br> 以及相应的 <span>

JavaScript Array CSV 解析、排序以及按位置重新排序

javascript - axios GET 结果为 "No ' Access-Control-Allow-Origin' header 出现在请求的资源上。”

java - 使用带有凭据的 $HTTP 在 angularJs 中发布时解决 CORS

javascript - 如何使用javascript将本地word docx文件上传到服务器上

JavaScript setInterval 没有停止

javascript - 将 JS Regex 捕获组存储在数组中的最佳方式?

javascript - 使用 *ngIf 会导致 HTTP 请求无限循环

javascript - 捕获重定向下载链接的 HTTP 状态 300