reCAPTCHA v3在b.com域名失效,报Cannot set properties of null错误的问题求助
reCAPTCHA v3在b.com域名失效,报Cannot set properties of null错误的问题求助
我有两个域名a.com和b.com,都启用了reCAPTCHA功能,并且用的是同一套代码,但奇怪的是reCAPTCHA在a.com上正常工作,到了b.com就失效了。具体的情况如下:
两个域名的reCAPTCHA密钥情况
- a.com:reCAPTCHA v3的密钥是朋友两年前创建的,站点使用
grecaptcha.execute方式调用,完全正常 - b.com:今天刚为这个域名创建了reCAPTCHA v3密钥,却出现了报错
遇到的错误信息
在b.com的浏览器控制台里,我看到了这样的错误:
contact.php:37 Uncaught (in promise) TypeError: Cannot set properties of null (setting 'value') at contact.php:37:71 (anonymous) @ contact.php:37 Promise.then then @ recaptcha__en.js:591 (anonymous) @ contact.php:36 Promise.then (anonymous) @ recaptcha__en.js:138 (anonymous) @ recaptcha__en.js:195 (anonymous) @ recaptcha__en.js:196 (anonymous) @ recaptcha__en.js:472 (anonymous) @ recaptcha__en.js:196 (anonymous) @ recaptcha__en.js:1132 (anonymous) @ recaptcha__en.js:1142
我使用的客户端代码
这是我在两个站点上都用的客户端代码:
<script src="https://www.google.com/recaptcha/api.js?render=mysitekey"></script> <script> grecaptcha.ready(function() { grecaptcha.execute('mysitekey', {action: 'contact_form'}) .then(function(token) { document.getElementById('g-recaptcha-response').value = token; }); }); </script>
额外发现的差异
我还注意到两个域名生成的reCAPTCHA token长度不一样:
- a.com生成的token大概有1100个字符
- b.com生成的token大概有2400个字符
有没有朋友能帮我看看,到底是代码哪里出问题了?
备注:内容来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

