Проверьте, может ли пользователь получить доступ к кросс-домену внешнего ресурса. - PullRequest
3 голосов
/ 04 августа 2011

Мне нужно проверить, был ли недавно зарегистрированный домен полностью зарегистрирован / распространен из браузера пользователей, чтобы я мог убедиться, что у них есть доступ к нему.

У меня есть полный контроль над сайтом, и мне нужно проверить, существует ли что-то простое, например, текстовый файл, в целевом домене, и если да, то мы готовы. Я могу редактировать как запрашивающую страницу, так и целевой ресурс. Я предполагаю, что это должна быть какая-то проверка jQuery ajax.

Я не могу сделать это в PHP, потому что, хотя DNS моих серверов распространялся, конечные пользователи могут не иметь.

Ответы [ 3 ]

2 голосов
/ 04 августа 2011

Вы не можете использовать AJAX Calls для этого, потому что он будет заблокирован той же политикой происхождения.

Но вместо этого вы можете использовать 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>
1 голос
/ 04 августа 2011

Предполагая, что вы не против разместить 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');
}
0 голосов
/ 05 августа 2011

Прошло много душевных страданий с этой и той же политикой происхождения.В конце концов, наиболее надежным / совместимым способом было загрузить тег <img> с изображением на целевом сервере и проверить обработчики .load и .error в jQuery.Я понял, что вам нужно установить src img ПОСЛЕ привязки обработчика ошибок.

<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>
...