0

ajax を使用して別の Web サイトから情報を取得しようとするとクロスドメイン エラーが発生することは理解していますが、jQuery によれば、代わりに jsonp リクエストを使用できるはずです。レキャプチャを表示しようとするときに、これを達成する方法に困惑しています。問題は、プラグインを使用してこれを実現できないことです。これにより、はるかに簡単になります。

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

これを Google サーバーに呼び出して、正しいコールバックを取得するにはどうすればよいですか。基本的に true または false を返します。悪名高い Access-Control-Allow-Login またはプレーン/テキストに関するエラーが表示されます。提案がある人はいますか?

4

2 に答える 2

0

1) Google は JSONP 出力をサポートしていません。なんで?2) に進みます。

2) reCAPTCHA は、サーバー側のコードで検証されることを意図しています。なんで?3) に進みます。

3) スパマーはクライアント側の検証コードを簡単に回避できるため、CAPTCHA ソリューションは無意味になります。

于 2012-06-23T16:37:57.130 に答える