flo*_*ger 9 post http recaptcha node.js
也许你们可以帮助我.我正在尝试在我的node.js应用程序中实现reCAPTCHA,无论我做什么,我都会将"invalid-site-private-key"作为响应.
这是我加倍和双重检查和尝试的事情:
我能想到的最后一件事是我对reCAPTCHA API本身的POST请求是不正确的,因为没有明确记录正文的具体格式(我知道参数已记录).所以这是我正在发送的请求主体(密钥和IP已更改但我在我这边检查过):
privatekey=6LcHN8gSAABAAEt_gKsSwfuSfsam9ebhPJa8w_EV&remoteip=10.92.165.132& challenge=03AHJ_Vuu85MroKzagMlXq_trMemw4hKSP648MOf1JCua9W-5R968i2pPjE0jjDGX TYmWNjaqUXTGJOyMO3IKKOGtkeg_Xnn2UVAfoXHVQ-0VCHYPNwrj3PQgGj22EFv7RGSsuNfJCyn mwTO8TnwZZMRjHFrsglar2zQ&response=Coleshill areacce
这种格式有问题吗?我必须发送特殊标题吗?我完全错了吗?(我现在正在工作16个小时所以这可能是..)
谢谢您的帮助!
flo*_*ger 17
如上面的评论中所述,我可以通过https://github.com/mirhampt/node-recaptcha上提供的broofa和node-recaptcha模块帮助自己解决问题.
但首先,要完成上面缺少的细节:
我没有发送任何请求标头,因为文档中没有任何说明.在解释必要参数之前,有关请求的所有内容如下:
"在您的页面成功显示reCAPTCHA之后,您需要配置表单以检查用户输入的答案是否正确.这是通过向http://www.google.com/recaptcha/api/发送POST请求来实现的.验证.下面是相关的参数."
- http://code.google.com/apis/recaptcha/docs/verify.html上的 "如何查看用户的答案"
所以我自己构建了一个查询字符串(这是一个单行程序,但有一个模块,以及我现在学到的内容)包含所有参数并将其发送到reCAPTCHA API端点.我收到的只是错误代码invalid-site-private-key,实际上(正如我们现在所知)是一种错误的发送方式400 Bad Request.也许他们应该考虑实施这个,然后人们不会想知道他们的钥匙有什么问题.
这些是标题参数,显然是必要的(它们意味着你要发送一个表单):
Content-Length 它必须是查询字符串的长度Content-Type 必须是 application/x-www-form-urlencoded我从node-recaptcha模块学到的另一件事是,应该发送utf8编码的查询字符串.
我的解决方案现在看起来像这样,您可以使用它或在其上构建,但错误处理尚未实现.它是用CoffeeScript编写的.
http = require 'http'
module.exports.check = (remoteip, challenge, response, callback) ->
privatekey = 'placeyourprivatekeyhere'
request_body = "privatekey=#{privatekey}&remoteip=#{remoteip}&challenge=#{challenge}&response=#{response}"
response_body = ''
options =
host: 'www.google.com'
port: 80
method: 'POST'
path: '/recaptcha/api/verify'
req = http.request options, (res) ->
res.setEncoding 'utf8'
res.on 'data', (chunk) ->
response_body += chunk
res.on 'end', () ->
callback response_body.substring(0,4) == 'true'
req.setHeader 'Content-Length', request_body.length
req.setHeader 'Content-Type', 'application/x-www-form-urlencoded'
req.write request_body, 'utf8'
req.end()
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
| 归档时间: |
|
| 查看次数: |
7714 次 |
| 最近记录: |