是否可以检查express.js处理程序是否正在使用HTTPS?

时间:2011-08-24 19:23:31

标签: ssl node.js express

有没有办法确定请求是否在带有express的node.js中使用HTTPS?我正在使用Heroku的证书,我假设它们安装在负载均衡器上,而不是安装在各个Web服务器/实例上。

3 个答案:

答案 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;
  }
});