使用ajax的ReCaptcha响应错误

ReCaptcha response error with ajax

本文关键字:响应 错误 ReCaptcha ajax 使用      更新时间:2023-09-26

我在我的网站上添加了一个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

在谷歌 API js 文件中,当我点击"不正确的验证码-sol"时......它将我重定向到带有以下两行的 JavaScript 文件:

false
incorrect-captcha-sol

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

怎么了?

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

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

该过程将是

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