Принудительно перенаправить приложение heroku / angular на версию HTTPS

У меня есть приложение angular 5, которое размещено на heroku. В настоящее время пользователи могут получить доступ к HTTP-версии приложения.

Как я могу заставить пользователей перенаправляться на версию HTTPS, даже если они обращаются к HTTP?

Что я пробовал:

app.use(function (req, res, next) {
let sslUrl;

if (process.env.NODE_ENV === 'production' &&
    req.headers['x-forwarded-proto'] !== 'https') {

    sslUrl = ['https://myapp.herokuapp.com', req.url].join('');
    return res.redirect(sslUrl);
}

return next();
});

Я поместил приведенный выше код на свой сервер node.js, но он не сработал.

Пользователи не могут использовать приложение через HTTP, поскольку получают ОШИБКУ 403

Быстрый поиск в Google дал бы этот ответ

user4676340 13.03.2018 10:15

@trichetriche Я пробовал то, что они предложили в этом ответе, и это не сработало.

Skywalker 13.03.2018 10:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
1 240
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я использовал пакет "force-ssl-heroku" в https://github.com/rangle/force-ssl-heroku, работает как по волшебству и очень легко интегрируется.

Просто потребуйте внутри вашего сценария начальной точки входа:

var forceSsl = require('force-ssl-heroku');

и используйте это так:

app.use(forceSsl);

Разверните и наслаждайтесь.

И убедитесь, что ваш NODE_ENV настроен на «производство» в Heruko.

Sagi Tsofan 13.03.2018 10:29

Это также перенаправляет, если пользователь специально вводит http://myapp.herokuapp.com в браузере?

Skywalker 13.03.2018 10:29

Конечно. когда вы нажимаете myapp.herokuapp.com в своем браузере, он переводится в myapp.herokuapp.com (с http), а затем пакет «force ssl» определяет, что заголовок «x-forwarded-proto» не является «https», а затем перенаправляет запрос к myapp.herokuapp.com (с https). Вы можете проверить свой ответ с кодами состояния на httpstatus.io, просто введите свой http-адрес, и вы увидите коды состояния.

Sagi Tsofan 13.03.2018 10:31

Другие вопросы по теме