Google reCaptcha验证失败:返回无效响应,请求排查方案
reCaptcha验证失败问题解决
问题根源很明确:Google的siteverify接口只接受application/x-www-form-urlencoded编码的请求体,而你的axios请求默认发送的是JSON格式数据,导致接口无法正确解析参数。
修复方案
方案1:用URLSearchParams构造表单数据
const postData = new URLSearchParams({ secret: process.env.RECAPTCHA_LEGACY_IOS, response: token }); const data = await axios.post('https://www.google.com/recaptcha/api/siteverify', postData);
方案2:手动设置请求头并转换数据格式
const post_data = { secret: process.env.RECAPTCHA_LEGACY_IOS, response: token }; const data = await axios.post( 'https://www.google.com/recaptcha/api/siteverify', new URLSearchParams(Object.entries(post_data)).toString(), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } );
额外检查项
- 确认
process.env.RECAPTCHA_LEGACY_IOS正确加载了reCaptcha密钥,无拼写错误或为空值 - 确认前端传过来的
token是有效未过期的reCaptcha响应令牌 - URL末尾无需加多余的
?,接口会自动忽略无效的查询参数
内容的提问来源于stack exchange,提问作者Binayak
相关产品推荐
相关产品推荐

