检查用户是否可以跨域访问外部资源



我需要检查新注册的域名是否已从用户浏览器中完全注册/传播,因此我可以确保他们可以访问它。

我有对网站的完全控制,需要检查的东西,如果像一个简单的文本文件存在于目标域,如果它是我们很好去。我可以编辑请求页面和目标资源。我猜这将不得不是某种形式的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>

相关内容

  • 没有找到相关文章

最新更新