Node.js强制https到许多重定向

时间:2016-06-27 11:12:25

标签: node.js

您好我想让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的重定向,一切正常。我的重定向错误在哪里?

1 个答案:

答案 0 :(得分: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));
    }
  });
}

这应该工作得很好,我希望这有帮助