NodeJS express-session无法在生产中设置connect.sid cookie

7rtdyuoh  于 2022-11-22  发布在  Node.js
关注(0)|答案(1)|浏览(116)

应用程序正在使用postgres池来存储会话。一直工作到应用程序成为整体,请求通过反向代理路由。但现在它是部署到Elastic Beanstalk上的生产的自己的服务,并且没有以所需的方式运行。

app.use(cors({credentials: true, origin: 'http://localhost:3000'}));

var sess = {
    store: new (connectPgSimple(session))({ pool: db.pool }),
    cookie: { 
        maxAge: 30 * 24 * 60 * 60 * 1000,
        httpOnly: false
    },
    secret: process.env.COOKIE_SECRET,
    resave: false,
    saveUninitialized: true,
}

// Trust first proxy for production
if (process.env.NODE_ENV === 'production') {
    app.set('trust proxy', 1) 
    sess.cookie.secure = true
}

app.use(session(sess));

还将withCredentials: *true*添加到来自客户端的所有请求中。
似乎只有当传入的请求被代理到express服务器时,才会设置connect.sid会话cookie。我尝试了使用express-session的config变体来信任代理,但它仍然没有创建所需的cookie。
Sample response for a POST request当我选中 ApplicationStorageCookies I don 't see the connect.sid cookie时,您可以看到返回Set-Cookie标头的响应

2wnc66cl

2wnc66cl1#

对于 遇到 express-session unable to set connect.sid cookie 问题 的 人 。 另外 , 您 可以 检查 您 的 'saveUninitialized': true, 是否 为 true , 这 意味 着 如果 输入 ' saveUninitialized ' :false , 则 不会 设定 任何 Cookie , 因为 没有 任何 项目 会 导致 设定 Cookie 。

相关问题