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

如何在Google reCAPTCHA验证通过后实现页面重定向?

解决Google reCAPTCHA验证成功后跳转的问题

首先得帮你梳理下原代码里的几个核心问题:

  • 语法错误:JS代码里多了一个多余的},直接导致脚本无法正常解析
  • 判断时机不对:你一开始就去检查grecaptcha.getResponse(),这时候用户还没碰验证码呢,肯定拿不到有效结果
  • 安全漏洞:只靠前端判断验证结果完全不安全,懂点技术的人可以直接绕过,必须通过后端调用Google的siteverify接口做真实验证

下面给你一套完整的前后端代码示例,包含正确的验证逻辑和跳转处理:

前端代码(HTML+JS)

<!DOCTYPE html>
<html>
<head>
    <title>reCAPTCHA验证示例</title>
    <!-- 引入reCAPTCHA官方脚本 -->
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
    <!-- reCAPTCHA容器,替换成你的公开Site Key -->
    <div class="g-recaptcha" data-sitekey="你的公开Site Key" data-callback="onCaptchaSuccess"></div>

    <script type="text/javascript">
        // 验证码验证成功后自动触发的回调函数
        function onCaptchaSuccess(token) {
            // 创建隐藏表单,把验证token发送到后端
            const form = document.createElement('form');
            form.method = 'POST';
            form.action = 'verify-recaptcha.php'; // 后端验证脚本的路径

            // 添加验证token字段
            const tokenInput = document.createElement('input');
            tokenInput.type = 'hidden';
            tokenInput.name = 'g-recaptcha-response';
            tokenInput.value = token;

            form.appendChild(tokenInput);
            document.body.appendChild(form);
            form.submit(); // 提交表单到后端做真实验证
        }
    </script>
</body>
</html>

后端代码(以PHP为例,verify-recaptcha.php)

<?php
// 替换成你的私密Secret Key(从Google reCAPTCHA控制台获取)
$secretKey = "你的私密Secret Key";
$captchaResponse = $_POST['g-recaptcha-response'] ?? '';

// 调用Google官方的siteverify接口验证token有效性
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = [
    'secret' => $secretKey,
    'response' => $captchaResponse,
    'remoteip' => $_SERVER['REMOTE_ADDR'] // 可选,提交验证的用户IP,用于增强安全性
];

// 组装POST请求参数并发送
$options = [
    'http' => [
        'header' => "Content-type: application/x-www-form-urlencoded\r\n",
        'method' => 'POST',
        'content' => http_build_query($data)
    ]
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$result = json_decode($response);

// 验证成功则跳转目标页面,失败则提示用户
if ($result->success) {
    header('Location: https://你的目标网站地址');
    exit;
} else {
    echo "验证码验证失败,请重试!";
    echo '<br><a href="javascript:history.back()">返回重新验证</a>';
}
?>

关键说明:

  1. 回调函数的作用:reCAPTCHA的data-callback属性会在用户完成验证后自动触发指定函数,这时候才能拿到有效的验证token,避免提前判断的问题
  2. siteverify接口的用法:这个接口是Google官方提供的验证通道,只有通过它确认token有效,才能安全执行跳转,防止恶意绕过
  3. 密钥替换:记得把代码里的你的公开Site Key和你的私密Secret Key替换成你在Google reCAPTCHA控制台获取的对应密钥

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:25:14