最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

验证google reCaptcha时输入响应和密码无效

IT培训 admin 4浏览 0评论

验证google reCaptcha时输入响应和密码无效

在向google recaptcha api发布帖子请求时,我真的很难获得成功的回复。我收到以下回复:

{
  "success": false,
  "error-codes": [
    "invalid-input-response",
    "invalid-input-secret"
  ]
}

我看了一下reCAPTCHA - error-codes: 'missing-input-response', 'missing-input-secret' when verifying user's response (missing details on POST)并尽可能地接近答案,但没有成功。

这是我的文件如下:

var request = require('request');

module.exports = {
  verifyCaptcha: function(req, res) {

    var secret = 'SECRET_KEY';
    var response = JSON.stringify(req.body.response);
    request({
        url: '',
        method: 'POST',
        headers: { "Content-Type": "application/x-www-form-urlencoded" },
        body: `secret=${secret}&response=${response}`,
    }, function (err, response, body) {
        if (err) {
            res.status(500).send({
                error: "Could not verify captcha"
            });
        } else {
            res.status(200).send({
                message: body
            });
        }
    });
  },
}

如果有人有这个问题的解决方案,请告诉我!

回答如下:

您需要添加用户远程IP地址。

var user_ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
request({
    url: 'https://www.google/recaptcha/api/siteverify',
    method: 'POST',
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: `secret=${secret}&response=${response}&remoteip=${user_ip}`}...

另一件事我看到你没有使用模板文字,你应该将引号改为`而不是'。

或者,您应该使用现成的reCaptcha模块,如下所示:

https://www.npmjs/package/recaptcha

验证google reCaptcha时输入响应和密码无效

在向google recaptcha api发布帖子请求时,我真的很难获得成功的回复。我收到以下回复:

{
  "success": false,
  "error-codes": [
    "invalid-input-response",
    "invalid-input-secret"
  ]
}

我看了一下reCAPTCHA - error-codes: 'missing-input-response', 'missing-input-secret' when verifying user's response (missing details on POST)并尽可能地接近答案,但没有成功。

这是我的文件如下:

var request = require('request');

module.exports = {
  verifyCaptcha: function(req, res) {

    var secret = 'SECRET_KEY';
    var response = JSON.stringify(req.body.response);
    request({
        url: '',
        method: 'POST',
        headers: { "Content-Type": "application/x-www-form-urlencoded" },
        body: `secret=${secret}&response=${response}`,
    }, function (err, response, body) {
        if (err) {
            res.status(500).send({
                error: "Could not verify captcha"
            });
        } else {
            res.status(200).send({
                message: body
            });
        }
    });
  },
}

如果有人有这个问题的解决方案,请告诉我!

回答如下:

您需要添加用户远程IP地址。

var user_ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
request({
    url: 'https://www.google/recaptcha/api/siteverify',
    method: 'POST',
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: `secret=${secret}&response=${response}&remoteip=${user_ip}`}...

另一件事我看到你没有使用模板文字,你应该将引号改为`而不是'。

或者,您应该使用现成的reCaptcha模块,如下所示:

https://www.npmjs/package/recaptcha

发布评论

评论列表 (0)

  1. 暂无评论