surls
surls is a connect middleware to ensure requests are switched between HTTP and HTTPS based on a config.
Installation
npm
npm install surls
GitHub
npm install https://github.com/martinrue/surls/tarball/master
Configuration
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
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.
Examples
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(['*']);
Example Application
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(req, res) {
res.send('index');
});
app.get('/secure1', function(req, res) {
res.send('secure 1');
});
app.get('/secure2', function(req, res) {
res.send('secure 2');
});
app.get('/secure3', function(req, res) {
res.send('secure 3');
});
app.get('/securez', function(req, res) {
res.send('secure Z');
});
http.createServer(app).listen(1234);
https.createServer(options, app).listen(12345);