我正在使用谷歌 recaptcha v2。客户端工作完美并生成令牌,我将其传递给服务器以进行验证。
我使用该令牌向 google 进行 api 调用,作为响应,我得到了乱码(
res.data
是乱码),这是我进行 api 调用的代码片段,
const payload = {
secret: process.env.NEXT_PUBLIC_RECAPTCHA_SECRET_KEY ?? "",
response: reCaptchaValue,
remoteip: undefined,
};
const verifyResponse = await axios({
method: "POST",
url: `https://www.google.com/recaptcha/api/siteverify`,
data: payload,
headers: {
"Content-Type": "application/json",
},
});
我的通话有问题吗?
我尝试了使用 axios 进行后调用的各种方法,但我得到了相同的响应。如果我使用该网址并将其粘贴到浏览器中,我会得到很好的响应,但不会从这里得到任何响应。
有类似的问题,问题似乎是 axios 的错误,您可以通过在标题中添加
"Accept-Encoding": "application/json"
来修复它
const payload = {
secret: process.env.NEXT_PUBLIC_RECAPTCHA_SECRET_KEY ?? "",
response: recaptchaValue,
};
const verifyResponse = await axios({
method: "POST",
url: `https://www.google.com/recaptcha/api/siteverify?secret=${payload.secret}&response=${payload.response}`,
headers: {
"Accept-Encoding": "application/json",
},
});
console.log(verifyResponse.data);
PS:我还对您的发布请求进行了轻微更改,以确保它在 2023 年 11 月时提供正确的结果。
或者,您可以使用另一个库来发出请求,例如
node-fetch
而不是 axios