ReCaptcha v3 未在 IE 11 中提供响应令牌对象



我正在开发一个MVC .Net应用程序。 我们最近在其中引入了reCaptcha v3,它在Chrome和Firefox中完美运行,但在IE中则完全不行。 下面是标头部分中包含的代码:

    <script src="https://www.google.com/recaptcha/api.js?render=@ViewBag.CaptchaSiteKey"></script>
    <script type="text/javascript">
    grecaptcha.ready(function () {
        var test = grecaptcha.execute('@ViewBag.CaptchaSiteKey', { action: '@ViewBag.CaptchaEnvironment'+'_' + '@ViewBag.CaptchaActionName'}).then(
            function (token) {
                // verify the token on the server
                document.getElementById("RecaptchaResponse").value = token;
            }, function (reason) {
                document.getElementById("RecaptchaResponse").value = reason;
            });
    });
    </script>

Viewbag 变量按预期设置,不会丢失任何内容。

需要馈送的对象以我的身体部分中包含的形式创建:

input id="RecaptchaResponse" name="RecaptchaResponse" type="hidden" autocomplete="off">

但在 IE11 中使用时仍为空。

我读过很多文章都在谈论这种行为,但没有任何效果。

提前谢谢你

Google reCAPTCHA v3 利用"JavaScript Promises"来正常运行。

在代码示例中,grecaptcha.execute(...)为令牌发出"承诺"。 一旦承诺"实现",代码的.then(function() { ... })部分就会被执行。

Chrome/Firefox的现代版本支持JavaScript Promises。 不幸的是,IE11没有。 为了使承诺在IE11上起作用,您需要包含一个polyfill(请参阅:https://github.com/stefanpenner/es6-promise(。

相关内容

  • 没有找到相关文章

最新更新