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

ReCAPTCHA siteverify接口未返回JSON响应问题求助

解决reCAPTCHA siteverify接口返回乱码及验证失败问题

问题根源

你的核心问题有两个:

  • Google的siteverify接口不支持JSON格式的请求体,它只接受application/x-www-form-urlencoded类型的表单数据
  • 返回的乱码是因为接口返回了gzip压缩的响应,若axios未正确配置自动解压,就会显示乱码

修正后的代码

替换你原来的请求配置部分,改成以下代码:

// 用URLSearchParams构造表单数据,而非JSON.stringify
const data = new URLSearchParams();
data.append('secret', process.env.RECAPTCHA_SECRET);
data.append('response', req.body.gcaptcha_response);

const config = {
    method: "post",
    url: "https://www.google.com/recaptcha/api/siteverify",
    // 强制开启gzip解压,确保响应能正常解析
    headers: {
        'Accept-Encoding': 'gzip, deflate'
    },
    data: data,
    // 确保axios自动处理解压(部分环境下需要显式开启)
    decompress: true
};

axios(config)
    .then(function (response) {
        res.json({
            success: true,
            body: response.data,
        });
    })
    .catch(function (error) {
        console.log(error);
    });

关键说明

  • 必须用URLSearchParams构造请求数据,这是siteverify接口要求的标准格式,JSON格式会被接口忽略,导致返回异常响应
  • decompress: true是axios的配置项,确保自动解压gzip/deflate格式的响应,解决乱码问题
  • 不需要手动设置Content-Type,当你传入URLSearchParams时,axios会自动设置为application/x-www-form-urlencoded;charset=utf-8,符合接口要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:30:45