使用cURL CLI将HTTPS POST发送到NodeJS服务器

时间:2015-08-18 12:25:51

标签: node.js ssl curl https

我写了一个HTTPS NodeJS服务器(带有自签名证书),我想从cURL CLI接收和处理POST请求。

我的服务器:

var https = require('https');
var fs = require('fs');
var config = require('./conf.json');
var g3updater_kernel = require('./g3updater_kernel');
var express = require('express');
var app = express();

var privateKey  = fs.readFileSync(config.security_repository+'/CA/rootCA.key', 'utf8');
var certificate = fs.readFileSync(config.security_repository+'/CA/rootCA.pem', 'utf8');

var httpsOptions = {
  key: privateKey,
  cert: certificate
}

app.post('/', function(req, res){
    console.log(req.query);
});


https.createServer(httpsOptions, app).listen(443);
我使用

cURL命令:

curl -d M=1 https://localhost/ -k

问题是我收到一个空查询。 console.log(req.query)显示:

{}

我在查询中遗漏了哪些内容?

1 个答案:

答案 0 :(得分:1)

为了解析您的帖子请求中的查询,您将要使用body-parser

在Express 4中,有意识地决定将bodyParser和CookieParser移动到单独的模块中。

为了访问您的查询,您的代码应该类似于:

var https = require('https');
var fs = require('fs');
var config = require('./conf.json');
var g3updater_kernel = require('./g3updater_kernel');
var express = require('express');
var bodyParser = require('body-parser');
var app = express();

var privateKey  = fs.readFileSync(config.security_repository+'/CA/rootCA.key', 'utf8');
var certificate = fs.readFileSync(config.security_repository+'/CA/rootCA.pem', 'utf8');

var httpsOptions = {
  key: privateKey,
  cert: certificate
}

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

app.post('/', function(req, res){
    console.log(req.body);
});

https.createServer(httpsOptions, app).listen(443);

请注意,它们将保存在req.body而不是req.query。

快乐的编码!