无法通过节点中的发布方法路由 https 请求.js



>我正在尝试通过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.createServerhttps.createServer

您正在传递一个无操作请求处理程序函数。改为传递快速应用实例:

var server = https.createServer(options, app).listen(443);

最新更新