在Razor注册页面中使用Google Recaptcha v3 Asp.Net Core 3。

问题描述 投票:0回答:1

我已经在我的网站中实施了Google的reaptcha v3。我已经在recaptcha设置页面的域名列表中添加了localhost、sitename.azurewebsites.net和sitename.com。

该代码在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);
                    });
            });
    });

这里是检查两个验证码的脚本,我的数学验证码和谷歌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

[object对象]:{action. "register", errorCodes: null, score: 0.9, success: true}。"register", errorCodes: null, score: 0.9, success: true}。

这里是sitename.azurewebsites.net的控制台日志,是的,我已经确认那里的viewource中的脚本和localhost中的脚本是一样的。

得分是:0

对象对象]

而从sitename.com得到的结果是一样的。

谁能解释这种行为,并可能有解决方案?我已经花了太多时间在这上面了。我的猜测是第一个脚本中的方法路径只能通过localhost工作,但我怎样才能让它在生产中工作?

jquery recaptcha razor-pages asp.net-core-3.0
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.