>我正在尝试通过HTTPS获取Post请求。 发布请求从 http 请求工作,但在来自 HTTPS 时被挂起。 HTTPS 部分用于将某些内容加载到页面,但不会回答 post 请求。 http处理帖子没有问题,但我需要它通过HTTPS,因为我认为无论如何它应该是这样的,这就是Android的HttpURLConnection所需要的。
router.post('/users', function(req, res){
var user = req.body;
Users.addUsers(user, function(err, user){
if(err){
throw err;
}else{
res.json(user);
}
});
});
var pkey = fs.readFileSync(path.join(__dirname, '/ssl/37718250_localhost.key'));
var pcert = fs.readFileSync(path.join (__dirname, '/ssl/37718250_localhost.cert'));
var options = {
key: pkey,
cert: pcert
};
var server = https.createServer(options, function (req, res) {
}).listen(443);
如果您查看 app.listen
的文档,您会发现它的字面意思是这样的:
app.listen = function() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
https
模块具有类似的语法,因此您可以执行以下操作:
var pkey = fs.readFileSync(path.join(__dirname, '/ssl/37718250_localhost.key'));
var pcert = fs.readFileSync(path.join (__dirname, '/ssl/37718250_localhost.cert'));
var options = {
key: pkey,
cert: pcert
};
var server = https.createServer(options, app);
server.listen(443);
Express app
实际上只是一个形式为function(request, response)
的函数,所以可以传递给http.createServer
和https.createServer
。
您正在传递一个无操作请求处理程序函数。改为传递快速应用实例:
var server = https.createServer(options, app).listen(443);