Перенаправить www на https на экспресс-сервере - PullRequest
0 голосов
/ 29 октября 2018

Я установил экспресс-сервер, работающий без каких-либо проблем, но если я попытаюсь перенаправить www.example.com на https, будет трудно.

Я создал https-сервер, который прослушивает порт по умолчанию 443 и экспресс-прослушивает порт 80 по умолчанию.

Если я вхожу на example.com перенаправляет на https://example.com, но если я вхожу на www.example.com, это дает небезопасный результат, поэтому здесь мне нужно перенаправить на https://examle.com., что я пробовал, но не работает .

app.get( '/', function(req, res, next) {
     if((req.get('X-Forwarded-Proto') !== 'https')) {
        res.redirect('https://' + req.get('Host') + req.url);
    } else {
        next();
    }
})

Вот простой код, который я попробовал

var enforce = require('express-sslify');

app.use(express.static('./dist/restraunt'));
app.use(enforce.HTTPS());
app.use(redirectUnmatched);

app.listen(port);
https.createServer(options, app).listen(443);

function redirectUnmatched(req, res) {
    res.redirect("https://example.com");
}

1 Ответ

0 голосов
/ 29 октября 2018

Если вы хотите перенаправить www на https, вот решение

введите код ниже в вашем app.js

app.get('*', function (req, res, next) {

      var checkHost = req.get('host').substring(0, 4);
      var condition = req.get('x-forwarded-proto') !== "https" || checkHost !== 'www.' || ( req.get('host').indexOf('www.') < 0);//
      if (condition) {
          res.set('x-forwarded-proto', 'https');

          if (checkHost === 'www.' && ( req.get('host').indexOf('www.') >= 0)) {
              res.redirect('https://' + req.get('host') + req.url);
          }
          else {
              res.redirect('https://www.' + req.get('host') + req.url);
          }
      } else {
          next();
      }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...