使用ajax进行ReCaptcha响应错误

时间:2013-11-13 18:33:59

标签: javascript jquery ajax json

我在我的网站上添加了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文件中,当我点击“wrong-captcha-sol”时...它会将我重定向到包含以下两行的javascript文件:

false
incorrect-captcha-sol

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

它出了什么问题?

1 个答案:

答案 0 :(得分:1)

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

  1. 您的私钥保密。
  2. 您可以绕过同源政策
  3. 该过程将是

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