5

发现了一个问题,当用户在 IE 中点击刷新时,Google recaptcha(不可见或 v2)将无限期地坐着并旋转。从监控流量来看,当有人点击复选框时,它似乎永远不会向谷歌发出 API 调用以进行重新验证。

使用 recaptchaV2 重现的步骤:

  1. 在初始加载时,单击 recaptcha 复选框
    • 预期:绿色复选标记
    • 实际:绿色复选标记
  2. 单击刷新或 f5
  3. 单击重新验证复选框
    • 预期:绿色复选标记
    • 实际:旋转

笔记:

  • 如果开发工具已打开,则在第 3 步中实际是预期的绿色复选标记
  • 如果在步骤 2 中使用 ctrl + f5,则在步骤 3 中实际是预期的绿色复选标记
  • 没有控制台错误发生
  • 尝试打电话grecaptcha.reset()没有运气

下面是我用来隔离问题的代码。我使用 npm install http-server –g 和 http-server 来提供文件。

<!doctype html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=yes">
    <script src="https://www.google.com/recaptcha/api.js?onload=onload&render=explicit" async defer></script>
</head>
<body> 
    <div id="gr123"></div>

    <script>            
        window.hasLoaded = false;
        window.onload = function() {        
            var elem = document.getElementById("gr123");

            if(!window.hasLoaded) {
                window.hasLoaded = true;
                grecaptcha.render(elem, {
                  "sitekey": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI",                      
                  "size": 'normal'
                });

                grecaptcha.reset();
            }
        }
    </script>
</body>    
</html>
4

0 回答 0