浏览器中未使用express-session设置Cookie

问题描述 投票:0回答:1

设置 我在本地运行两个 docker 容器。一个 Express 后端和一个 next.js 前端。我的数据库位于远程服务器上。

后端片段:

const corsOptions = {
    origin: '*', 
    credentials: true,
};
app.use(cors(corsOptions)); 

app.use(express.static("public"));

app.use(express.json()); // lets us interpret(parse) post requests and returns an Object
app.use(express.urlencoded({ extended: true }));

// import (own) database config
const database = require("./database");

// session middleware
const session = require('express-session');
const MySQLStore = require('express-mysql-session')(session);

const sessionStore = new MySQLStore({}, database);
sessionStore.all(function(error, sessions) {
    console.log('all sessions:', sessions);
 });
// setting up session middleware  
app.use(session({
    secret: 'asdasdcads',                            
    createDatabaseTable: true,
    store: sessionStore,
    resave: false, 
    saveUninitialized: false,
    expiration: 600000,
    cookie: {
        sameSite: 'lax',
        domain: 'localhost'
    },
    secure: false
}));

当我在 localhost:80(映射为 80:3000 的 Docker 容器)中打开站点时,会使用 ID 创建会话,并且当 saveUninitialized 设置为 true 时,会话甚至会存储在我的数据库中。最后一步,在浏览器中设置cookie失败。相反,如果我刷新站点,则会创建一个新会话。 我猜会话中间件没有在响应中添加 Set-Cookie,但我真的想知道为什么以及如何更深入地研究它。我询问了 chatGPT 并向 cookie 和会话配置添加了一堆内容以使其正常工作,如您所见,但没有成功。 ChatGPT 还建议在会话后设置 cors,但后来又恢复了。

docker session cookies session-cookies express-session
1个回答
0
投票

我也遇到同样的问题,请问你解决了吗?

© www.soinside.com 2019 - 2024. All rights reserved.