You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地测试reCAPTCHA v3时execute返回null及异常响应问题

解决reCAPTCHA v3在localhost返回null的问题

我之前在本地测试reCAPTCHA v3的时候也碰到过一模一样的问题,控制台返回的那个奇怪格式响应()]}' ["rresp",null,null,null,null,null,10])其实是Google接口的一种特殊返回格式,通常意味着请求没有成功通过验证。结合你的情况,给你几个排查方向:

1. 检查站点密钥的域名配置

首先去Google reCAPTCHA控制台确认你的v3密钥对应的允许域名里已经添加了localhost(不需要带端口号,Google会自动匹配同一域名下的所有端口)。如果是刚添加的域名,可能需要等个几分钟让配置生效。另外要确保你用的是reCAPTCHA v3的密钥,不是v2的——两种密钥不通用。

2. 确认本地可以正常访问Google服务

reCAPTCHA的接口依赖Google的服务器,如果你的本地环境无法正常访问Google,请求会失败,自然返回null。可以尝试访问https://www.google.com/recaptcha/api2/siteverify看看能不能正常打开,要是打不开的话,得先解决网络访问的问题才能继续测试。

3. 代码细节的小调整

你的代码整体结构是对的,但可以加个错误捕获来排查更详细的问题,同时完善表单提交的token传递逻辑:

<script src='https://www.google.com/recaptcha/api.js?render=你的真实站点密钥'></script>
<script>
grecaptcha.ready(function() {
  grecaptcha.execute('你的真实站点密钥', {action: 'submit_form'}).then(function(token) {
    console.log("获取到的token:", token);
    // 把token放到表单的隐藏字段,方便提交给后端验证
    const tokenInput = document.createElement('input');
    tokenInput.type = 'hidden';
    tokenInput.name = 'g-recaptcha-response';
    tokenInput.value = token;
    document.querySelector('form').appendChild(tokenInput);
  }).catch(function(error) {
    console.error("reCAPTCHA执行出错:", error);
  });
});
</script>
<form action="http://localhost:7684/botcheck" method="post">
  <input type="text" name="name" value="" placeholder="name" required />
  <button type="submit">submit</button>
</form>

这里要注意两个关键点:

  • 一定要把代码里的你的真实站点密钥替换成你在Google控制台生成的v3密钥,不能直接用占位符
  • 把token存入隐藏字段是为了让后端能拿到这个值,调用Google的验证接口完成校验

最后验证步骤

  1. 确认域名配置正确且等待配置生效(通常5分钟内)
  2. 本地能正常访问Google相关服务
  3. 替换真实密钥后刷新页面,查看控制台是否能输出有效的token

内容的提问来源于stack exchange,提问作者badcoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:38:46