不能使用 res.set() 来设置标头“x-forwarded-proto”

问题描述

我正在尝试检查 http,然后重定向到 https。但是我被卡住了,我搜索和尝试的一切似乎都不起作用。 我注意到在 req.secure 上我总是会得到错误并且 req.protocol 总是会是“http”,即使我在浏览器中通过 https 连接。 我怀疑这与代理服务器有关,因为我正在使用 bitnami linux 在 aws lightail 上使用 node express 应用程序,并且 req.host 作为本地主机出现,所以我必须使用“x-forwarded-host”。我已经设置了 app.enable('trust proxy') 但它没有任何影响。

所以,我正在尝试设置以下代码以从 http 重定向到 https

if (req.get("x-forwarded-proto") != "https") {
    res.set("x-forwarded-proto","https");
    res.redirect("https://" + req.get("x-forwarded-host") + req.originalUrl);
}

然而,这只是创建了一个无限循环,因为 req.get('x-forwarded-proto') 返回 undefined 并且 res.set('x-forwarded-proto') 实际上没有设置一个值,所以 if 语句只会返回错误的。 知道该怎么做以及如何前进吗?

编辑:我使用 bitnami bncert 来设置 SSL 加密,并且在配置时我设置了从 http 到 https 和从非 www 到 www 的自动重定向,但这似乎不起作用,因为我仍然可以访问 http://example.com 而不会被重定向https://www.example.com

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)