表示4.x将httpredirect到https

我有以下代码:

var https = require('https'); var http = require('http'); var express = require('express'); var app = express(); var router = express.Router(); app.use('/', router); //listen server on https var server = https.createServer(config.sslCredential, app); server.listen(config.serverPort); //listen server on http, and always redirect to https var httpServer = http.createServer(function(req,res){ res.redirect(config.serverDomain+req.url); }); httpServer.listen(config.httpServerPort); 

但不知何故,我不能让https请求被redirect到https请求,我应该如何正确使用快递4.x node.js做到这一点?

引用一个中间件解决scheme从我自己的答案 (这顺便说一句,特快3.0)

 app.all('*', ensureSecure); // at top of routing calls http.createServer(app).listen(80) https.createServer(sslOptions, app).listen(443) function ensureSecure(req, res, next){ if(req.secure){ // OK, continue return next(); }; // handle port numbers if you need non defaults // res.redirect('https://' + req.host + req.url); // express 3.x res.redirect('https://' + req.hostname + req.url); // express 4.x }