-1

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

下面是函数:

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. 此功能是否为“可重入”? (可有一次,我把它安全地多次为不同的网址,在那里?)

回答

0

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

客户端?只有在您提出请求的网站使用CORS授予您许可时(这似乎不太可能)。

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

此功能是否为“可重入”? (我可以同时为不同的网址多次安全呼叫吗?)

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