Недавно я принял удар по настройке HTTPS на узле/экспресс-сервере. Я успешно удалось перенаправить все маршруты, которые используют протокол HTTPS, используя код ниже:Переадресация HTTPS для всех маршрутов node.js/express - Проблемы с безопасностью
// force https redirect
var https_redirect = function(req, res, next) {
if (req.secure) {
if(env === 'development') {
return res.redirect('https://localhost:3000' + req.url);
} else {
return res.redirect('https://' + req.headers.host + req.url);
}
} else {
return next();
}
};
app.get('*', function(req, res, next) {
https_redirect(req, res, next);
});
Это, кажется, работает хорошо. Тем не менее, поскольку я не имел права на это, у меня есть несколько вопросов:
- Это идеальный способ перенаправления с http на https?
- Если пользователь использует маршрут http, перед перенаправлением, возможно, кто-нибудь может использовать что-то вроде sslstrip, чтобы вынюхивать информацию о сеансе.
узел: v0.8.2; экспресс: v3.05
Peter благодарит за ответ. Это действительно помогло. – los7world
Это замечательно, но это немного проблематично для разработки, если вы используете нестандартные (80 для HTTP, 443 для HTTPS), потому что он пытается перенаправить на 'https: // localhost: [PORT]'. Обходным решением является установка переменной среды SSL_PORT в среде 'development', и, если она определена, замените порт. См. [Здесь] (https://gist.github.com/gingi/47df42a45bb1653002ee#file-gistfile1-js-L5-L8) для модифицированного фрагмента. – Gingi
hei, как я могу подключиться к интерфейсу клиента после этого? Благодаря ! – alexsc