Nodejs安全烹饪和HTTPOnly支持代理服务器

时间:2018-05-22 03:46:37

标签: node.js express

在具有安全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
    }
}));

2 个答案:

答案 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连接到服务器(或代理,如果它是反向代理),它就可以工作。