我正在使用以下插件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();
}
});
但谷歌服务器没有返回任何内容。 我更新了代码,但没有运气。
答案 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