我们有一个 node.js/express 应用程序位于 stunnel 后面,用于 ssl 终止。我不知道如何强制保护 session cookie。查看 session 中间件源代码:
// only send secure session cookies when there is a secure connection.
// proxySecure is a custom attribute to allow for a reverse proxy
// to handle SSL connections and to communicate to connect over HTTP that
// the incoming connection is secure.
var secured = cookie.secure && (req.connection.encrypted || req.connection.proxySecure);
if (secured || !cookie.secure) {
res.setHeader('Set-Cookie', cookie.serialize(key, req.sessionID));
}
我显然必须将 req.connection.proxySecure 设置为 true,但我不知道该怎么做。看来 stunnel 应该“通过 HTTP”进行通信,但 stunnel 无法设置 header 。所以我很茫然。我应该尝试在 session 中间件之前通过中间件的自定义位在本地设置它,还是在某处的连接配置变量中设置它?
感谢您的帮助
最佳答案
确保代理正在设置 X-Forwarded-Proto: https
header 。然后,您必须将 proxy:true
配置参数添加到 session 中间件。
关于node.js - 如何在 stunnel 后面的 node.js/connect 应用程序中设置 req.connection.proxySecure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14553310/