express 4.x redirect http to https

express, http, javascript, node.js, redirect

Solution

Quoting a middleware solution from my own answer (which btw was on express 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
}

Problem

I have the following code : ``` var https = require('https'); var http = require('http'); var express = require('express'); var app = express(); var router = express.Router(); app.use('/', router); //have 'server' listen for 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); ``` but somehow I can't get the https request to be redirected into https request, how should I do this correctly on node.js with express 4.x ?

Original source

Related problems