Дневник испытаний 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.
Вот как я решил проблему, спасибо!