相关疑难解决方法(0)

reCAPTCHA - 错误代码:'missing-input-response','missing-input-secret'验证用户的响应时(POST上缺少详细信息)

我在我的Web应用程序中设置了一个不可见的reCAPTCHA,无法验证用户的响应.(即使我传递了正确的POST参数)

我通过调用grecaptcha.execute();客户端以编程方式调用挑战.然后registrationForm.submit();使用recaptcha回调提交表单()()

<div class="g-recaptcha"
  data-sitekey="SITE_KEY"
  data-callback="onSubmit"
  data-size="invisible">
</div>
Run Code Online (Sandbox Code Playgroud)

现在阅读"验证用户响应"文档后,我发现响应令牌作为POST参数传递给g-recaptcha-response:

对于Web用户,您可以通过以下三种方式之一获取用户的响应令牌:

  • 用户在您的站点上提交表单时的g-recaptcha-response POST参数
  • ...

所以我使用Fetch在服务器端使用所需的正文数据在验证端点上创建POST请求:

verify(req, res, next) {
  const VERIFY_URL = "https://www.google.com/recaptcha/api/siteverify";

  return fetch(VERIFY_URL, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      secret:   process.env.RECAP_INVIS_SECRET_KEY,
      response: req.body['g-recaptcha-response'],
    }),
  })
  .then(response => response.json())
  .then(data => {
    res.locals.recaptcha = data;
    return next();
  });
}
Run Code Online (Sandbox Code Playgroud)

但我一直得到以下回应:

{success:false,error-codes:['missing-input-response','missing-input-secret']}

即使我将响应和秘密作为JSON数据传递给POST正文.

难道我做错了什么?问候.

post recaptcha node.js express

12
推荐指数
1
解决办法
5780
查看次数

由于"无效输入密钥",google recaptcha返回false

我已经从谷歌安装了最新的recaptcha,但它总是在提交后返回false并且总是返回"invalid-input-secret"错误,即使从前端视图验证总是正确的.这可能是什么原因.顺便说一句,我正在使用phalcon框架测试localhost xampp中的所有内容.这是我检查验证码的部分:

protected function validate_data($post, $ip){

    $validation = new Validation();
    $validation->add(
        'user_name',
        new PresenceOf(
            array(
                'message' => 'The Username is required'
            )
        )
    );
    $validation->add(
        'email',
        new PresenceOf(
            array(
                'message' => 'The e-mail is required'
            )
        )
    );
    $validation->add(
        'password',
        new PresenceOf(
            array(
                'message' => 'The Password is required'
            )
        )
    );
    $validation->add(
        'cpassword',
        new PresenceOf(
            array(
                'message' => 'The Confirmation Password is required'
            )
        )
    );
    $validation->add(
        'email',
        new Email(
            array(
                'message' => 'The e-mail is not valid'
            ) …
Run Code Online (Sandbox Code Playgroud)

php captcha phalcon

2
推荐指数
2
解决办法
1万
查看次数

标签 统计

captcha ×1

express ×1

node.js ×1

phalcon ×1

php ×1

post ×1

recaptcha ×1