【问题标题】:HTTPS POST using cURL CLI to a NodeJS server使用 cURL CLI 到 NodeJS 服务器的 HTTPS POST
【发布时间】:2015-11-11 09:20:58
【问题描述】:

我编写了一个 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) 显示:

{}

我在查询中遗漏了什么吗?

【问题讨论】:

标签: node.js ssl curl https


【解决方案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 中。

编码愉快!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 2014-03-09
    • 2021-10-15
    • 2017-06-13
    相关资源
    最近更新 更多