在具有安全cookie的Nodej和代理服务器后面的HTTPOnly。 HttpOnly标志和带安全标志的Cookie如何将其标头发送到代理服务器?
我一直在阅读并假设我需要在我的代理服务器上启用X-Forward-Proto?
process.env.NODE_ENV = 'production';
if (app.get('env') === 'production') {
app.set('trust proxy', 1) // trust first proxy
}
app.use(session({
store: new RedisStore({host: '127.0.0.1', port: 6379, client: client, ttl: 3600}),
key: 'sid',
secret: 'abcde',
resave: false,
saveUninitialized: false,
// proxy: true,
cookie: {
secure: true,
httpOnly: true,
maxAge: 3600000
}
}));
答案 0 :(得分:1)
我遇到了类似的问题,并在this tutorial的帮助下得以解决。
您还需要在会话配置中将proxy
选项设置为true
。
我建议使用环境变量表达式process.env.NODE_ENV === "production"
进行此操作。
app.use(session({
store: new RedisStore({host: '127.0.0.1', port: 6379, client: client, ttl: 3600}),
key: 'sid',
secret: 'abcde',
resave: false,
saveUninitialized: false,
proxy: process.env.NODE_ENV === "production",
cookie: {
secure: process.env.NODE_ENV === "production",
httpOnly: true,
maxAge: 3600000
}
}));
从express-session文档中:
代理
设置安全Cookie(通过“ X-Forwarded-Proto”标头)时信任反向代理。
默认值为未定义。
true将使用“ X-Forwarded-Proto”标头。
答案 1 :(得分:0)
HttpOnly标志只能由HTTP客户端考虑。 HTTP代理只会传递该标志并忽略它。
只要客户端本身通过HTTPS连接到服务器(或代理,如果它是反向代理),它就可以工作。