【发布时间】:2015-08-23 11:14:07
【问题描述】:
我正在尝试在我的网站上使用 recaptcha。带有 express 框架的 Nodejs 服务器。该网站没有被托管,我仍在本地处理它。在主页上,用户输入他的信息创建帐户,并解决了recaptcha,我发送结果
$("#g-recaptcha-response").val()
到服务器。在我的服务器上,
https.get("https://www.google.com/recaptcha/api/siteverify?secret=" + SECRET + "&response=" + key, function(res) {
var data = "";
res.on('data', function (chunk) {
data += chunk.toString();
});
res.on('end', function() {
try {
var parsedData = JSON.parse(data);
console.log(parsedData);
callback(parsedData.success);
} catch (e) {
callback(false);
}
});
});
其中 key 是响应,SECRET 是他们给你的密钥。我宣布 一个变量 SECRET 并将密钥作为字符串存储在其中。
每一次,都是为了
console.log(parsedData);
这是说
{ success: false, 'error-codes': [ 'invalid-input-secret' ] }
我复制粘贴了秘钥,怎么会失效呢。只有在“秘密参数无效或格式错误”时才应该显示此错误,正如其website 上所说的那样。我关注了这个tutorial。
【问题讨论】:
-
密钥是否包含任何“特殊”字符,这些字符可能在 URL 中具有定义的含义? (例如问号或 & 号,或非 ASCII 字符)也许您只需要正确地对值进行 URL 编码?
-
@CBroe 秘密包含一些下划线 _,我将如何对值进行 URL 编码?
-
不,那些应该没问题。但是查看您链接到的文档,它说它需要是 POST 请求,而您现在正在执行 GET。
-
我只是复制并粘贴了我在该网站上看到的内容(教程),他使用了一个 get。我尝试更换它,但出现了一些错误。我是否需要立即托管我的网站才能使其正常工作,因为我不需要,我只是在本地服务器上完成所有这些工作。
-
更新的解决方案已经发布在这里:stackoverflow.com/a/66900684/11636916
标签: node.js post get recaptcha