2016-06-27 2 views
0

Привет, я хотел сделать https маршрутом по умолчанию для моего сайта.Node.js force https для многих перенаправлений

У меня есть следующий код, чтобы это произошло

if (app.get('env') === 'production') { 
    app.use (function (req, res, next) { 
    if (!req.secure){ 
     // request was via http, so redirect to https 
     res.redirect('https://' + req.headers.host + req.url); 
    } 
    }); 
} 

После этого у меня есть несколько маршрутов, как

app.use(express.static(path.join(__dirname, 'public'))); 
app.use("/de", express.static(__dirname + "/public")); 
app.use("/de/home", express.static(__dirname + "/public")); 

Если я не использовать редирект для HTTPS все работает нормально. Где моя ошибка перенаправления?

+0

Можно ли предположить, что вы слушаете на HTTPS? Это работает, если вы просматриваете HTTPS? – leetibbett

+0

нет не можем предположить. я просто хотел, чтобы все были перенаправлены на https. – Silve2611

+0

Ваш сервер должен прослушивать как HTTP, так и HTTPS, чтобы это работало – leetibbett

ответ

0

Вы должны превратить свои компоненты в кодированные компоненты URI

if (app.get('env') === 'production') { 
    app.use (function (req, res, next) { 
    if (!req.secure){ 
     // request was via http, so redirect to https 
     res.redirect('https://' + encodeURIComponent(req.headers.host) + encodeURIComponent(req.url)); 
    } 
    }); 
} 

это должно работать нормально, я надеюсь, что это помогает

+0

, это не работает. если я регистрирую wat в перенаправлении, я получаю ttps: // localhost% 3A3000% 2F – Silve2611

Смежные вопросы