首页 > 解决方案 > 不确定为什么在使用 express-session 时没有 cookie 被发送回我的 localhost 客户端

问题描述

遇到节点问题express-session,基本上只是想了解它在我的 postgres 数据库中的 cookie 和我的会话存储方面是如何工作的。

对于初学者,我不确定为什么在我的 react 应用程序运行的 chrome 浏览器中没有收到会话 id cookie localhost:3000。如果我localhost:5000/login从邮递员调用路由,则会收到一个 cookie,但是当从 Chrome 调用相同的路由时:localhost:5000/login然后检查我的 cookie,使用fetchAPI 时不会创建任何内容。

会话在 postgres 中创建得很好。

这是我用于会话设置的中间件:

app.use(session({
  store: new pgSession({
    pool : pool,                // Connection pool
    schemaName: 'my_schema',
    tableName : 'user_sessions'       
  }),  
  secret: randomString.generate({
    length: 14,
    charset: 'alphanumeric'
  }),
  resave: false,
  saveUninitialized: false,
  cookie: { maxAge: 1000 * 60 * 60 * 24,
            httpOnly: true }  
}))


app.use(function (req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
  next();
});

我的另一个问题是,在我的 react 应用程序中,如何使用我的 postgres 数据库中的会话信息来检查对所有路由的所有请求是否仍然来自客户端的同一用户?

标签: node.jsreactjsexpressmiddlewaresetcookie

解决方案


试试这个,改变你的cors中间件这个

 app.use(cors({ origin: true, credentials: true }));

并在您提出请求时添加

 withCredentials: true,
   credentials: "include",

我有同样的问题,我在从邮递员发帖时收到烹饪,但在使用 axios 发出请求时不是从浏览器,希望它也适用于你


推荐阅读