app.all('*', function(req, res, next){
console.log('req start: ',req.secure, req.hostname, req.url, app.get('port'));
if (req.secure) {
return next();
};
res.redirect('https://'+req.hostname+':'+app.get('secPort')+req.url);
});
在传入的请求消息上设置了req.secure。因此req.secure将设置为true。在这种情况下,传入的请求已经到达安全服务器。因此,其余的处理可以像往常一样前进。如果传入请求是针对不安全的服务器,即本地主机冒号3000,那么我将使用名为res.redirect的函数,该函数在express中可用。所以我将此请求设置为HTTPS//
。所以我想知道如何将所有http请求重定向到https?req.secure如何检查请求是针对安全服务器还是针对不安全服务器?
答案 0 :(得分:1)
req.secure
检查协议是否为HTTPS,并且与以下内容相同:
req.protocol === 'https'
有关详细信息,请参阅文档:
要强制将所有流量重定向到https,您可以执行以下操作:
server.use('/path', function(req, res, next) {
if(!req.secure) {
var secureUrl = "https://" + req.headers['host'] + req.url;
res.writeHead(301, { "Location": secureUrl });
res.end();
}
next();
});
如本文所述: