微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决不能使用 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 举报,一经查实,本站将立刻删除。