Дневник испытаний StoryShaala.com

Что происходило?

Когда я набираю URL-адрес www.storyshaala.com, по умолчанию используется http://www.storyshaala.com. Из-за этого браузер уведомляет, что сайт не защищен, хотя в моем домене установлен SSL-сертификат.

Когда я специально набираю https://www.storyshaala.com, я получаю значок замка зеленого цвета, который говорит, что этот сайт защищен.

Чего я хотел?

Я хочу, чтобы всякий раз, когда пользователь заходит на мой сайт, первый сервер проверял, является ли запрос http или https. Если запрос с http, то сервер вместе с запросом должен перенаправить на https://www.storyshaala.com.

Конфигурации приложений:

  • Сервер, развернутый на Heroku dyno
  • Сертификат SSL от Heroku ACM (автоматическое управление сертификатами)
  • * не обязательно должно быть точно таким же для вас. Если у вас есть другой облачный сервер и вы приобрели свой SSL-сертификат из других источников, это также будет работать для этого.

Решение

В файл сервера вашего узла добавьте следующий код:

//http to https redirects
app.enable('trust proxy);
app.use((req,res,next)=>{
    if(rec.secure){
        next();
    }else{
        res.redirect('https://www.storyshaala.com'+req.url);
    }
});

Вам следует заменить https://www.storyshaala.com на req.redirect('https://'+req.host+req.url) или заменить req.hostна ваш домен.

Чтобы узнать о app.enable('trust proxy'), посетите https://stackoverflow.com/questions/39930070/nodejs-express-why-should-i-use-app-enabletrust-proxy

rec.secure возвращает true, если TLS-соединение установлено, т. е. запрос выполняется по протоколу https.

req.urlпредоставляет строку запроса из запрошенного URL.

Вот как я решил проблему, спасибо!