Экспресс-перенаправление HTTP на HTTPS - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь заставить мое приложение Express перенаправлять пользователей на HTTPS, когда они посещают сайт по HTTP. Я посмотрел на этот вопрос:

Автоматическое соединение HTTPS / перенаправление с помощью 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 голосов
/ 12 марта 2019

Разобрался. Моя функция app.use была в коде после некоторого промежуточного программного обеспечения Express, которое не вызывало next (), поэтому оно не вызывалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...