Recaptcha angularjs验证用户的答案

时间:2014-04-15 12:57:28

标签: angularjs recaptcha

我正在使用以下插件https://github.com/VividCortex/angular-recaptcha,以便在登录表单中使用recaptcha。

我使用以下代码进行验证

$http({
            url: 'https://www.google.com/recaptcha/api/verify', 
            method: 'POST',
            params: {privatekey: "key", remoteip: "userip", challenge: "challenge", response: "user_answer" },
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        }).success(function(data) {
            console.log(data);
            if (valid) {
                console.log('Success');
                alert('Success');

            } else {
                console.log('Failed validation');
                alert('Fail');

                // In case of a failed validation you need to reload the captcha because each challenge can be checked just once
                //vcRecaptchaService.reload();
            }

        });

但谷歌服务器没有返回任何内容。 我更新了代码,但没有运气。

3 个答案:

答案 0 :(得分:0)

我认为您的代码中有拼写错误:

post: 'GET'

将其更改为method: 'GET'method: 'POST' 您可以查看angular documentation on http以确保您已正确编写了所有参数。

如果这不是问题的根源,您应该发布有关您的问题的更多详细信息(例如,您在networkl控制台中看到了什么)。

答案 1 :(得分:0)

请记住,重新验证必须在服务器端完成。我不是百分百肯定你在浏览器中这样做,但你的代码看起来像。

答案 2 :(得分:0)

正如Miguel Trias所说,你不应直接从angularjs / javascript客户端验证,而是应该将挑战和响应字段发送到你的服务器并进行验证。

因此,您可以使用您使用的uri(https://www.google.com/recaptcha/api/verify)或插件,例如如果你使用php,请参阅https://developers.google.com/recaptcha/docs/php。我更喜欢插件,因为它可以节省工作。

此外请记住,您的私钥不应该在客户端中使用,这就是它被称为私有的原因。它仅用于在服务器和reCaptcha服务器之间进行通信。公钥用于在客户端和reCaptcha服务器之间进行通信。 有关详细信息,请阅读Overview