使用json文章的摘要authentication的curl命令
(使用node.js,express,passport-http)
我有一个POST路由做摘要身份validation,试图应用程序JSON的内容types。
我可以用摘要命中GET路由,没有问题,我可以使用基本身份validation来打开POST路由,但是当我尝试使用摘要身份validation执行POST时,会得到400 – 错误请求。 它看起来像curl把内容types放在初始摘要请求(内容长度为0,所以它知道足够的不发送初始digest-auth请求的JSON正文),我的一方(expression)失败无效的JSON(空体):
$ curl -v --digest -X POST --data @body.json --user org2user2:lameduck -H "content-type: application/json" http://127.0.0.1:3002/user * About to connect() to 127.0.0.1 port 3002 (#0) * Trying 127.0.0.1... * connected * Connected to 127.0.0.1 (127.0.0.1) port 3002 (#0) * Server auth using Digest with user 'org2user2' > POST /user HTTP/1.1 > User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5 > Host: 127.0.0.1:3002 > Accept: */* > content-type: application/json > Content-Length: 0 > < HTTP/1.1 400 Bad Request < X-Powered-By: Express < Content-Type: text/plain < Date: Thu, 21 Mar 2013 15:33:10 GMT < Connection: keep-alive < Transfer-Encoding: chunked
我似乎无法弄清楚发送摘要的初始包没有这个curl魔术,只是在实际的数据请求中添加内容types。
作为参考,虽然我不认为它有帮助,但是这是同一个电话的BASIC成绩单:
$ curl -v --basic -X POST --data @body.json --user org2user2:lameduck -H "content-type: application/json" http://127.0.0.1:3002/user * About to connect() to 127.0.0.1 port 3002 (#0) * Trying 127.0.0.1... * connected * Connected to 127.0.0.1 (127.0.0.1) port 3002 (#0) * Server auth using Basic with user 'org2user2' > POST /user HTTP/1.1 > Authorization: Basic b3JnMnVzZXIyOmxhbWVkdWNr > User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5 > Host: 127.0.0.1:3002 > Accept: */* > content-type: application/json > Content-Length: 48 > * upload completely sent off: 48 out of 48 bytes < HTTP/1.1 200 OK < X-Powered-By: Express < Content-Type: application/json; charset=utf-8 < Content-Length: 51 < Date: Thu, 21 Mar 2013 15:43:48 GMT < Connection: keep-alive < { "this": "is working", "that": "is annoying" * Connection #0 to host 127.0.0.1 left intact }* Closing connection #0
任何帮助都是极好的。
我遇到了同样的问题。 我不能回答你关于命令行魔术的问题,告诉CURL不要在最初的请求中发送内容types(我不认为这有什么魔力)。
然而,我可以告诉你,问题的根本原因是Node + Express(连接)通过bodyParser发送初始摘要请求,并且因为应用程序/ json头在那里它试图parsing正文(这是空的) 。 就个人而言,我不认为如果主体是空的,expression式就会吓倒,而只是返回一个空的JSON结构(我的工作在下面)。
未来可能会有一个更好的(官方)解决方法,因为这个特殊问题现在在github上讨论(1天前) https://github.com/senchalabs/connect/issues/415
我的解决方法(连接/ lib /中间件/ json.js:70)
if (0 == buf.length) { // return next(400, 'invalid json, empty body'); req.body = {}; return next(); }
- passport.use local-login acess to res
- Active Directoryauthentication与ldap.js
- Passport身份validation在sails.js应用程序中不起作用
- 基于令牌的身份validation和在Nodejs中的Facebook身份validation
- 使用cookie进行节点用户authentication
- 在Express应用程序中validationSocket.IO客户端
- 找不到模块“encryption”
- 新用户注册后立即进行Passport身份validation
- 如何使用Node.js和Passport进行身份validation后,使用自己的ID将用户redirect到主页?