跨域XMLHttpRequest验证网站存在?

时间:2015-12-22 15:18:00

标签: javascript ajax xmlhttprequest cross-domain http-response-codes

我正在尝试编写一个获取外部URL的JavaScript函数,并尝试在'tmOut'msecs中验证它的存在。如果在此时间范围内进行验证,则应使用此URL作为参数调用“回调”函数。

这是功能:

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);
}

问题是因为跨域调用(可能)我得到x.status = 0而不管url是否存在。

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

  2. 这个功能是“可重入的”吗? (我可以一次安全地为不同的网址多次调用它吗?)

1 个答案:

答案 0 :(得分:0)

  

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

客户端?只有当您提出使用CORS的请求的网站授予您许可时(根据上下文,这似乎不太可能)。

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

  

这个功能是“可重入的”吗? (我可以一次安全地为不同的网址多次调用它吗?)

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