我需要检查新注册的域名是否已从用户浏览器中完全注册/传播,因此我可以确保他们可以访问它。
我有对网站的完全控制,需要检查的东西,如果像一个简单的文本文件存在于目标域,如果它是我们很好去。我可以编辑请求页面和目标资源。我猜这将不得不是某种形式的jQuery ajax检查。
我无法在PHP中做到这一点,因为尽管我的服务器DNS已经传播,但最终用户可能没有。
你不能使用AJAX调用,因为它会被同源策略阻止。
但是你可以用iframes来代替:
<iframe id="check_1" src="http://www.wikipedia.com"></iframe>
<iframe id="check_2" src="http://www.aasdjflajsdflasdf.com"></iframe>
<script type="text/javascript">
$(document).ready(function() {
$('iframe#check_1').load(function()
{
alert("check 1 succeeded!");
});
$('iframe#check_2').load(function()
{
alert("check 2 succeeded!");
});
});
</script>
假设你不介意在你的网站上使用jQuery,像这样的东西应该可以作为一个框架:
$.ajax('http://www.example.com/text.txt', {
success: function(result) {
alert('User has access');
},
error: function() {
alert('User does not have status');
}
});
代替那些无用的alerts
,你可以这样做:
success: function() {
$.get('http://1.1.1.1/user-has-access.php?access=true');
},
error: function() {
$.get('http://1.1.1.1/user-has-access.php?access=false');
}
为了这个和同源政策,我经历了很多心痛。最后,最可靠/兼容的方法是在目标服务器上加载带有图像的<img>
标记,并在jQuery中检查.load
和.error
处理程序。问题是您需要设置img AFTER的src绑定错误处理程序。
<img id="check" width="1" height="1" />
<script type="text/javascript">
$(function() {
$("#check").error(function(){
// It failed
}).attr('src', 'http://domain.com/px.gif');
$('#check').load(function() {
// It worked
});
});
</script>