req.secure如何在https安全通信中检查传入请求是否用于安全服务器?

问题描述:

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如何检查请求是用于安全服务器还是用于不安全的服务器?req.secure如何在https安全通信中检查传入请求是否用于安全服务器?

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(); 
}); 

在这篇文章中解释说: