自从 Chrome 和 Edge 上周更新到版本 122 后,reCaptcha 就停止在我的网站上运行。 似乎发生的情况是回调没有被调用。一旦用户单击该复选框,它就会因旋转器转动而卡住加载。 到目前为止,该实施已经工作多年。 该应用程序是使用 Java Ice Faces 实现的,这里是一个实现片段。回调永远不会被调用。
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
async="true"
defer="true">
</script>
<script type="text/javascript">
var captchaKey = "<the-key>";
//<![CDATA[
function onloadCallback(){
var reCaptchaEl= document.getElementById('re-captcha-main');
grecaptcha.render('reCaptchaEl', {
'sitekey' : captchaKey,
'callback': function () {
onReCaptchaResponse();
},
'expired-callback':function(){
onRecaptchaExpired();
}
});
}
//]]>
</script>
<div id="re-captcha-main"></div>
onReCaptchaResponse()
和 onRecaptchaExpired()
位于单独的文件中,但它们不会被调用,所以我没有在这里共享它们。
当用户禁用 chrome://flags/#disable-javascript-harmony-shipping 标志时,事情就会开始恢复。但这只能作为临时解决方法。
我注意到在新浏览器发布之前控制台中发生了一个错误,该错误现在随着新版本而消失。我不确定这是否与此有关。当用户禁用上述标志时,错误又会出现。不过,它同时也可以工作。
recaptcha__en.js:191 Uncaught (in promise) TypeError: Iterator value null is not an entry object
at new Map (<anonymous>)
at E_.X (recaptcha__en.js:191:71)
at Array.<anonymous> (recaptcha__en.js:138:3)
at f.next (recaptcha__en.js:177:55)
at B (recaptcha__en.js:472:261)
让我知道是否有人遇到任何类似问题以及是否有人知道如何解决此问题。 谢谢!
用户单击 reCaptcha 验证复选框,但它只是永远卡在旋转中而没有调用回调。它是随着最新的铬 122 的发布而开始发生的。
这是由于 google 阻止第三方 cookie 造成的。 我有同样的问题,我通过将这个
Set-Cookie: __Host-name=value;Path=/;Secure;SameSite=None; Partitioned
添加到 this Documentation 之后的响应标头来解决它。但现在我们每次页面加载时都会有一个循环,无限循环中一次又一次加载。如果有人解决了这个问题,请发布解决方案。