快速重定向HTTP到HTTPS

时间:2019-03-11 18:20:20

标签: express redirect https

我试图让我的Express应用程序在用户使用HTTP访问站点时将其重定向到HTTPS。我看了这个问题:

Automatic HTTPS connection/redirect with node.js/express

但是它并没有我一直在寻找的答案。我正在使用httpolyglot:

https://github.com/mscdex/httpolyglot

因为我只想在一个端口上执行此操作,并且httpolyglot的性能与广告中所宣传的一样,但是我无法使重定向工作。这是我的代码:

var express = require('express');
var https = require('https')
var gulp = require('gulp');
var fs = require('fs');
var httpolyglot = require('httpolyglot');
var app = express();
require('./gulpfile');

gulp.start('config');

const options = {
    key: fs.readFileSync("/path/to/key.key"),
    cert: fs.readFileSync("/path/to/cert.cer")
};

app.use(express.static(__dirname));
app.use(function(req, res) {
    if (!req.socket.encrypted) {
        res.writeHead(301, {'Location': 'https://' + req.host + req.url});
        return res.end()
    }
});

app.get('/landing', function(req, res) {
  res.sendFile(__dirname + '/landing.html');
});

// Defer all other routes to the angular app
app.use(function(req, res) {
    res.sendFile(__dirname + '/index.html');
});

httpolyglot.createServer(options, app).listen(3004);

1 个答案:

答案 0 :(得分:0)

弄清楚了。我的app.use函数位于某些Express中间件之后的代码中,该中间件没有调用next(),因此没有被调用。