派对迟到了,但我设法破解了它:
起初,我想像其他人一样进行 AJAX 调用,只是它最初对我不起作用,因为我使用了 jQuery。如果您执行 XMLHttpRequest,它会完美运行:
var url = http://url_to_test.com/
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status != 200) {
console.log("iframe failed to load");
}
};
xhttp.open("GET", url, true);
xhttp.send();
编辑:
所以这个方法工作正常,除了它有很多误报(拿起很多会在 iframe 中显示的东西)由于跨域恶意。我解决这个问题的方法是在服务器上执行 CURL/Web 请求,然后检查响应标头 a) 网站是否存在,以及 b) 标头是否已设置x-frame-options
。
如果您运行自己的网络服务器,这不是问题,因为您可以为它进行自己的 api 调用。
我在 node.js 中的实现:
app.get('/iframetest',function(req,res){ //Call using /iframetest?url=url - needs to be stripped of http:// or https://
var url = req.query.url;
var request = require('https').request({host: url}, function(response){ //This does an https request - require('http') if you want to do a http request
var headers = response.headers;
if (typeof headers["x-frame-options"] != 'undefined') {
res.send(false); //Headers don't allow iframe
} else {
res.send(true); //Headers don't disallow iframe
}
});
request.on('error',function(e){
res.send(false); //website unavailable
});
request.end();
});