2012-06-22 4 views
0

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

<script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script> 
<script type="text/javascript"> 
      function showRecaptcha() { 
      Recaptcha.create("// removed for example", 'captchadiv', { 
       tabindex: 1, 
       theme: "red", 
       callback: Recaptcha.focus_response_field 
      }); 
      } 

jQuery(document).ready(function(){ 
    showRecaptcha('recaptcha_div'); 

    jQuery('#contact-form').submit(function(){ 
     var challenge = Recaptcha.get_challenge(); 
     var response = Recaptcha.get_response(); 
     var ip = "<?php print $_SERVER['REMOTE_ADDR'] ?>"; 
     var private = "// removed for example"; 

     var requestUrl = "http://www.google.com/recaptcha/api/verify?privatekey=" + private + "&remoteip=" + ip + "&challenge=" + challenge + "&response=" + response; 

     jQuery.getJSON(requestUrl, function(json) { 
      alert("what"); 
     }); 

    }) 
}); 
</script> 

<form id=""> 

// Form stuff 

</form> 
<div id="captchadiv"></div> 
<input type="submit" name="submit" id="form-submit"> 

Как я могу назвать это сервером googles и получить правильный обратный вызов. Это в основном собирается вернуть истину или ложь. Я либо получаю печально известный Access-Control-Allow-Login, либо или ошибку в отношении plain/text. Кто-нибудь с предложениями?

+0

Я только что понял, что мой заголовок был неправильным. Предполагалось, что это «Google Recaptcha без плагина PHP» – chadpeppers

ответ

0

1) Google не поддерживает вывод JSONP. Зачем? Перейдите к пункту 2).

2) reCAPTCHA предназначен для проверки на стороне сервера. Зачем? Перейдите к 3).

3) Спамеры могут легко обойти ваш код проверки на стороне клиента, тем самым делая любое решение CAPTCHA бессмысленным.

+0

1.) Это понятно. 2) Он проверен на стороне сервера в конце их googles, поэтому они предлагают проверку без плагинов. Я предполагаю, что единственный вариант - разрешить перекрестный домен только для Google. – chadpeppers

+0

Для 2) это должно быть сделано на * вашей * стороне сервера. В основном ваш сервер разговаривает с Google. Пользовательский агент (браузер) должен предоставлять только вход, а не результат проверки reCAPTCHA. –