node.js - 从服务器重定向时,页面从 HTTPS 重定向到 HTTP

标签 node.js amazon-web-services https sails.js load-balancing

我们有一个在 Amazon Beanstalk 服务上运行的应用程序,它使用 sails.js 作为服务器,使用 Backbone.js 作为客户端。

我们希望网站是安全的,所以我们需要只允许 https 访问作为协议(protocol)。

问题: 我们有一个负载均衡器,它获取 HTTPS 协议(protocol)并将流量定向到 HTTP 端口 8080。这导致当从 node.js (sails) 重定向时,页面被重定向到不安全协议(protocol),因为应用程序不知道它来自安全协议(protocol)一个……

这个问题有解决办法吗?

module.exports = function(req, res, next)
{
  if (req.isAuthenticated())
        return next();
  else  
  {
      // here the protocol is replaced with http
      res.redirect('/login#');
  }
}

最佳答案

一般来说,你需要检查X-Forwarded-Proto header 以查看用户与负载均衡器的连接是通过 HTTP 还是 HTTPS。如果是 HTTP,则重定向到 HTTPS。

关于重定向到 HTTP 的代码,看起来您没有在代码中做任何实际从 HTTP 重定向到 HTTPS 的事情,您只是在不更改协议(protocol)的情况下重定向到登录页面。

关于node.js - 从服务器重定向时,页面从 HTTPS 重定向到 HTTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33718440/

相关文章:

amazon-web-services - AWS Elastic Beanstalk 多容器 Docker 配置上的 HTTPS/SSL 问题

.net - .NET 中的 TLS - 第三方根 CA 未被识别为受信任的根 CA

javascript - knockout : Loading Page While Waiting for a Query to Finish

javascript - 使变量对用户完全不可见,直到他做了特定的事情

mysql - 迁移后 AWS DMS 出现问题

amazon-web-services - AWS CFN 错误 "The parameter groupName cannot be used with the parameter subnet"

Android Webview 客户端证书、相互身份验证、SSL over Webview

javascript - Firebase 2 (firebase.google.com) 推送通知 - 从外部管理

javascript - Node.js:拆分代码的正确方法是什么?

amazon-web-services - 启动 StepFunction 并退出不会触发执行