我尝试在Express应用中将所有http请求重定向到https,并在app.js中包含以下代码:
var express = require('express');
var path = require('path');
var http = require('http');
var https = require('https');
var fs = require('fs');
var app = express();
var options = {
key: fs.readFileSync('validPathToSSLKey'),
cert: fs.readFileSync('validPathToSSLCertBundles')
}
///...
function requireHTTPS(req, res, next){
if (!req.secure){
return res.redirect('https://' + req.get('host') + req.url);
}
next();
}
app.use(requireHTTPS);
http.createServer(app).listen(80);
https.createServer(options, app).listen(443);
module.exports(app);
目前,SSL工作正常,但唯一没有重定向到https的路线是当网址以' http'为前提时。 (如http://domain.com)。我已经尝试实现Stack Overflow帖子提供的一些片段,其中一些建议改变IP表,但我希望实现重定向的东西,而不必处理防火墙。有什么想法吗?