Google recaptcha 在尝试在服务器端验证时发送乱码响应

问题描述 投票:0回答:1

我正在使用谷歌 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 进行后调用的各种方法,但我得到了相同的响应。如果我使用该网址并将其粘贴到浏览器中,我会得到很好的响应,但不会从这里得到任何响应。

recaptcha react-google-recaptcha
1个回答
0
投票

有类似的问题,问题似乎是 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

© www.soinside.com 2019 - 2024. All rights reserved.