跨域XMLHttpRequest以验证网站是否存在



我正在尝试编写一个JavaScript函数,该函数获取一个外部url,并尝试在"tmOut"毫秒内验证其存在。如果在这个时间段内得到验证,它应该调用一个以这个url为参数的"callback"函数。

以下是功能:

function chkUrl(url, tmOut, callback) {
  var abortChk = false;
  var abortTmr = setTimeout(function(){abortChk = true;}, tmOut);
  var x = new XMLHttpRequest();
  x.onreadystatechange = function() {
    if (x.readyState == 4) {
      if (x.status < 400 && !abortChk) {
        clearTimeout(abortTmr);
        callback(url);
      }
    }
  };
  x.open('GET', url, true);
  x.send(null);
}

问题是由于跨域调用(可能),无论url是否存在,我都会得到x.status=0。

  1. 有没有办法克服/解决这个问题(用户不必修改任何默认的浏览器设置)?或者,有没有其他方法可以实现相同的功能?

  2. 这个函数是"可重入的"吗?(对于不同的url,我可以同时安全地调用它几次吗?)

有没有办法克服/解决问题

客户端?只有当你请求使用CORS的网站授予你权限时(考虑到上下文,这似乎不太可能)。

从服务器而不是直接从浏览器执行测试。

这个函数是"可重入的"吗?(对于不同的url,我可以同时安全地调用它几次吗?)

是的。您没有创建任何全局变量。

相关内容

  • 没有找到相关文章

最新更新