有没有办法确定请求是否在带有express的node.js中使用HTTPS?我正在使用Heroku的证书,我假设它们安装在负载均衡器上,而不是安装在各个Web服务器/实例上。
答案 0 :(得分:0)
Express对http和https服务器有不同的配置。你是否在同一个应用程序中同时收听?或只是听一个?
您可以查看Express指南,了解如何设置每种服务器类型 http://expressjs.com/guide.html
如果你想同时从同一个文件中提供服务,你可以设置app = http和app2 = https的东西。
app.get('/ server',function(req,res){console.log('http request')}); app2.get('/ server',function(req,res){console.log('https request')});
答案 1 :(得分:0)
同样的事情,nginx在我的情况下处理ssl,因此我被迫抓住信息客户端。在第一页加载时,我提取协议并将其发送到节点异步。
console.log(location.href.split('://')[0]);
认为这不是一个可靠的解决方案,但在生产中效果出奇的好。
您是否找到了服务器端解决方案?
答案 2 :(得分:0)
如果您可以配置nginx,请在nginx config
中添加此参数proxy_set_header X-Forwarded-Proto https;
然后在您的代码中检查它并为其他处理程序设置标志。
mainapp.use(function(req, res) {
if ( req.header('X-Forwaded-Proto') == 'https' ) {
req.is_ssl = true;
}
});