【问题标题】:Cross-domain XMLHttpRequest to verify website existence?跨域 XMLHttpRequest 验证网站是否存在?
【发布时间】:2015-12-22 15:18:00
【问题描述】:

我正在尝试编写一个获取外部 url 的 JavaScript 函数,并尝试在“tmOut”毫秒内验证它的存在。如果在这个时间范围内得到验证,它应该以这个 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. 这个函数是“可重入的”吗? (我可以一次安全地为不同的网址调用几次吗?)

【问题讨论】:

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


    【解决方案1】:

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

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

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

    这个函数是“可重入的”吗? (我可以一次为不同的 url 安全地多次调用它吗?)

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

    【讨论】:

      猜你喜欢
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 2011-03-09
      • 1970-01-01
      相关资源
      最近更新 更多