0

我在我的网站上添加了 Google ReCaptcha,这是 Google 提供的 HTML 表单:

<script type="text/javascript"
src="http://www.google.com/recaptcha/api/challenge?k=my_public_key">
</script>

<noscript>
    <iframe src="http://www.google.com/recaptcha/api/noscript?k=my_public_key"
height="300" width="500" frameborder="0"></iframe><br>
    <textarea name="recaptcha_challenge_field" rows="3" cols="40">
    </textarea>
    <input type="hidden" name="recaptcha_response_field"
value="manual_challenge">
</noscript>

这是我的 jQuery(请注意,POST 发送的所有值都是正确的,我已经全部检查过了)

$('#captcha_form_btn').live('click', function () {
    var challenge = $('#recaptcha_challenge_field').val();
    var response = $('#recaptcha_response_field').val();
    var remoteip = $('#remoteip').val();

    $.ajax({
        url:'http://www.google.com/recaptcha/api/verify',
        data:'challenge=' + challenge + '&response=' + response + '&remoteip=' + remoteip + '&privatekey=my_private_key',
        type:'post',
        dataType:'jsonp',
        success: function (data) {
            console.log(data);
        }
    });
});

我正在使用 AJAX 验证客户端对 ReCaptcha 的回答,我发送客户端的 ip、响应、质询和我的私钥以从谷歌 API 获取响应。

但是,收到 API 响应有问题,(我不完全知道是否收到),firebug javascript 控制台显示一个 javascript 错误说明:

ReferenceError: incorrect is not defined

incorrect-captcha-sol

在 google API js 文件中,当我点击“incorrect-captcha-sol”时......它会将我重定向到包含这两行的 javascript 文件:

false
incorrect-captcha-sol

我认为,这是应该作为 json 数据发送回客户端的响应,但在这里,我看到它涉及 API js 文件中的 JS 错误。

它出什么问题了?

4

1 回答 1

1

在这种情况下,您需要使用您的服务器作为代理来发出此请求,以便:

  1. 您的私钥保密
  2. 你可以绕过同源策略

该过程将是

Browser -> Your Server -> Google Server -> Your Server -> Browser

于 2013-11-13T19:01:31.077 回答