surls

A connect middleware to ensure requests are switched between HTTP and HTTPS properly

surls

surls is a connect middleware to ensure requests are switched between HTTP and HTTPS based on a config.

npm install surls
npm install https://github.com/martinrue/surls/tarball/master

The first thing you must do is call configure to specify which URLs should be secured. You can optionally specify the HTTP and HTTPS port numbers to use.

var surls = require('surls');
 
surls.configure(['/login', '/resetpassword'], { httpPort: 1234, httpsPort: 12345 });

URLs that are to be forced to HTTPS should be specified in the array passed to configure. You can specify an exact URL match using a string or provide a regex that will be tested against the current request URL. You can also use an asterisk to indicate that all URLs should be forced to HTTPS.

Only requests to /login and /account will be forced to HTTPS, all other requests will be forced to HTTP.

surls.configure(['/login', '/account']);

Requests to /secure0, /secure1, ... /secure9 will be forced to HTTPS, all other requests will be forced to HTTP.

surls.configure([/secure[0-9]/]);

All requests will be forced to HTTPS.

surls.configure(['*']);
var fs = require('fs');
var http = require('http');
var https = require('https');
var express = require('express');
var surls = require('surls');
 
var options = {
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.crt')
};
 
surls.configure([/secure[0-9]/], { httpPort: 1234, httpsPort: 12345 });
 
var app = express();
 
app.configure(function() {
  app.use(surls.secureUrls);
});
 
app.get('/', function(reqres) {
  res.send('index');
});
 
app.get('/secure1', function(reqres) {
  res.send('secure 1');
});
 
app.get('/secure2', function(reqres) {
  res.send('secure 2');
});
 
app.get('/secure3', function(reqres) {
  res.send('secure 3');
});
 
app.get('/securez', function(reqres) {
  res.send('secure Z');
});
 
http.createServer(app).listen(1234);
https.createServer(options, app).listen(12345);