在我的webapp中,我需要检查另一台服务器(在不同的IP地址上)是否已启动。我知道由于跨域限制,我无法使用直接的ajax请求。我无法使用JSONP,因为我对其他服务器没有任何控制权。我还需要反复检查服务器是否正常运行,因为它可能在某些时候不可用。所有这些都不容易。
但是,由于我只关心对远程服务器的请求成功(并且我不关心服务器可能返回的任何数据),所以我希望它是可能的。
我无法在服务器端执行此操作,因为服务器端可能或可能没有其他服务器的可见性,我真正关心的是客户端(Web浏览器)具有可见性。
我可以在页面上添加一个新的iframe,其中src等于远程服务器地址,但是如何检查何时(IF)iframe内容已成功加载?另外我如何定期提出请求?通过反复创建新的iframe?这似乎很不洁净。
有没有办法干净可靠地做到这一点?
答案 0 :(得分:2)
function testServer(server, cb) {
var img = new Image();
img.onload = function() {
cb.call(this, img);
};
img.src = server;
}
var url = "http://placekitten.com/200/300/"
testServer(url, function _self(img) {
if (img.naturalHeight === 200) {
alert("win");
} else {
setInterval(function() {
testServer(url, _self);
}, 10000);
}
});
您想从远程服务器加载图像,然后检查图像高度或其他任何内容。
如果您无法在远程服务器上放置图像,则需要使用CORS
答案 1 :(得分:0)
Raynos使用jQuery的类似解决方案:
$('<img src="http://domain.tld/path/to/a.png">').load(function(){
console.log("domain.tld is up.");
});
答案 2 :(得分:-1)
我知道由于跨域限制,我不能使用ajax。
不正确。见JSONP