应用程序正在使用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当我选中 Application〉Storage〉Cookies I don 't see the connect.sid
cookie时,您可以看到返回Set-Cookie标头的响应
1条答案
按热度按时间2wnc66cl1#
对于 遇到
express-session unable to set connect.sid cookie
问题 的 人 。 另外 , 您 可以 检查 您 的'saveUninitialized': true,
是否 为true
, 这 意味 着 如果 输入 ' saveUninitialized ' :false , 则 不会 设定 任何 Cookie , 因为 没有 任何 项目 会 导致 设定 Cookie 。