【问题标题】:Unsure as to why no cookie is being sent back to my localhost client when using express-session不确定为什么在使用 express-session 时没有将 cookie 发送回我的本地主机客户端
【发布时间】:2021-07-25 08:14:45
【问题描述】:

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

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

会话在 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.js reactjs express middleware setcookie


    【解决方案1】:

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

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

    并在您提出请求时添加此内容

     withCredentials: true,
       credentials: "include",
    

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

    【讨论】:

    • 仅供参考,我没有使用 Axios,我实际上使用的是 fetch API - 这有什么不同吗?
    • @ArthurJ,不,它没有,只是弄清楚如何为您的请求选项提供凭据和 withCredentials,我并没有真正使用 fetch API xd
    • 会做,但据我所见,当我将 credentials: "include" 添加到我的 fetch 登录路径时,这现在不再有效。我什至添加了res.header('Access-Control-Allow-Credentials', 'true'),它没有任何区别。
    • hmm 我仍然怀疑您的请求选项设置,确保您使用了正确的选项, -- credentials 控制浏览器对凭据(cookie、HTTP 身份验证条目和 TLS 客户端证书)的处理。除了凭据之外,我想不出任何其他阻止将 cookie 设置到浏览器的东西。
    猜你喜欢
    • 2021-02-04
    • 2019-04-17
    • 2021-08-20
    • 2019-06-28
    • 2023-01-18
    • 1970-01-01
    • 2020-07-21
    • 2019-03-20
    • 1970-01-01
    相关资源
    最近更新 更多