我们有一个在 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/