我已经在自己的网站上实现了Google的recaptcha v3。我已经将localhost,sitename.azurewebsites.net和sitename.com添加到了Recaptcha设置页面上的域列表中。
该代码在localhost上的开发中工作正常,但是每次在azure发布站点和实际站点上均失败。该操作始终为空,因此分数始终为空。
出于示例目的,这是在注册表上的实现方式
grecaptcha.ready(function () {
grecaptcha.execute('sitekeyhere',{ action: 'register' })
.then(function (token) {
$.getJSON("/Home/RecaptchaV3Verify?token=" + token,function (data) {
var score = data.score;
$("#RecaptchaScore").val(score);
console.log("Score is:" + score);
console.log(data);
});
});
});
这是同时检查验证码,我的数学验证码和Google v3验证码得分的脚本
function check() {
var $errMessage = "Your captcha score indicates you are possibly a bot,form not submitted.";
var $answerValue = $("#realAnswer").val();
var $userInput = $("#ans").val();
var googleScore = parseFloat($("#RecaptchaScore").val());
if ($answerValue === $userInput && googleScore > 0.65) {
$("#register-form").submit();
}
$("#register-errors").append(
"<ul><li>" + $errMessage + "</li></ul><br />");
return false;
}
这是来自本地主机的控制台日志
得分是:0.9
[对象对象]:{操作:“注册”,错误代码:null,得分:0.9,成功:正确}
这是来自sitename.azurewebsites.net的控制台日志,是的,我已经确认视图源中的脚本与本地主机中的脚本相同。
得分是:0
[对象对象]
,结果与sitename.com相同
任何人都可以解释这种现象并可能有解决方案吗?我已经花了很多时间在这上面。我的猜测是第一个脚本中方法的路径仅可通过localhost使用,但是如何使其在生产环境中可用?