Я использую подстановочный знак в конце моих объявлений Express-маршрута, чтобы проверить, не является ли соединение не HTTPS, а если нет, перенаправить на HTTPS-версию URI.Экспресс-переадресация SSL не работает для root/
Это работает на все, кроме root, то есть на www.domain.com. Это немного проблема, потому что domain.com обслуживает SPA.
app.get('*', function (req, res) {
if (req.headers['X-forwarded-proto'] != 'https') {
res.redirect('https://domain.com/#' + url_path);
}
else {
res.redirect('/#' + url_path);
}
});
Я заметил, что этот фрагмент кода даже не вызывается, когда URL-адрес является корневым доменом. Я думаю, что это может быть потому, что я заявляю:
app.use(express.static(path.join(application_root, 'public')));
Это необходимо для SPA для обслуживания всех активов. Когда я удаляю эту строку, мой обработчик маршрута теперь вызывается для корневого домена, но моя домашняя страница теперь бесконечно перенаправляется.
Вы используете обратный прокси-сервер, такой как Nginx? Не могли бы вы также включить конфигурацию вашего веб-сервера, чтобы мы могли проверить, как настроены заголовки запросов. –
Я использую AWS Load Balancer, который на самом деле не имеет большой конфигурации. Я могу подтвердить, что X-forwarded-proto работает. – metalaureate