【发布时间】:2012-05-31 10:36:38
【问题描述】:
我在 node 上使用 expressjs 并同时运行 https 和 http。
我想要求/secure/* 的所有路由都使用 https。完成:
app.all("/secure/*", function(req, res, next) {
if (!req.connection.encrypted) {
res.redirect("https://" + req.headers["host"].replace(new RegExp(config.http_port, "g"), config.https_port) + req.url);
} else {
return next();
};
});
但是,我还想要求所有未使用/secure/* 并尝试访问 https 的路由都使用相同的方法重定向到 http。
我试过这样做:
app.all("*", function(req, res, next) {
console.log(req);
if (req.connection.encrypted) {
res.redirect("http://" + req.headers["host"].replace(new RegExp(config.https_port, "g"), config.http_port) + req.url);
} else {
return next();
};
});
但在访问 https 页面时,我最终陷入了重定向循环。有没有办法指定所有路线,除了/secure/* 的路线?
谢谢!
【问题讨论】:
-
在第二次重定向中,不应该只将非
/secure/*的请求重定向到http://吗?