Nodejs 安全 Cook 和 HTTPOnly 在代理服务器后面

Jam*_*Lei 1 node.js express

在 Nodejs 中,在代理服务器后面具有安全 cookie 和 HTTPOnly。HttpOnly 标志和带有 Secure 标志的 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
    }
}));
Run Code Online (Sandbox Code Playgroud)

Ada*_*m D 5

我遇到了类似的问题并在本教程的帮助下解决了它。

您还需要在会话配置中设置该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
    }
}));
Run Code Online (Sandbox Code Playgroud)

来自快速会话文档:

代理人

设置安全 cookie 时信任反向代理(通过“X-Forwarded-Proto”标头)。

默认值未定义。

true 将使用“X-Forwarded-Proto”标头。