目前,我使我的node.js项目同时创建了http和https服务器。
var httpServer = http.createServer(app);
httpServer.listen(3000);
var httpsOptions = {
ca: fs.readFileSync(config.https.ssl.ca, 'utf8'),
key: fs.readFileSync(config.https.ssl.key, 'utf8'),
cert: fs.readFileSync(config.https.ssl.cert, 'utf8')
};
var httpsServer = https.createServer(httpsOptions, app);
httpsServer.listen(8000);
此外,我使用此中间件将所有http流量重定向到https。
app.all('*', function(req, res, next){
var host = req.header("host");
if (host && host.indexOf('localhost') !== -1) {
next()
} else if (req.connection.encrypted) {
next();
} else {
res.redirect('https://' + host + req.url);
}
});
但对于某些网页,我不需要https连接,比如http://www.domain.com/shops/路由。我可以使用http方法制作此路由,所有其他路由仍使用https吗?
p.s:此页面请求来自其他路线的资源,如bower_components,public,...等等。
答案 0 :(得分:0)
您可以按如下方式找到请求路径,这可能会帮助您相应地重定向您的请求。
var url_parts = url.parse(req.url);
console.log(url_parts);
console.log(url_parts.pathname);