express-session刷新后session丢失

环境

前端使用Axios发送请求配置了axios.defaults.withCredentials = true
后端使用express设置了header和session

// CORS
app.use('*', (req, res, next) => {
    res.header('Access-Control-Allow-Origin', 'url')
    res.header('Access-Control-Allow-Headers', 'Content-Type,Content-Length, Authorization, Accept,X-Requested-With')
    res.header('Access-Control-Allow-Credentials', 'true')
    res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
    if (req.method == 'OPTIONS') return res.status(200).send('OK')
    next()
});

// session
app.use(session({
    secret: 'sec',
    resave: true,
    saveUninitialized: false,
    // store: new SQLiteStore,        // 目前的解决方案是存储到本地数据库中
    cookie: {
        maxAge: 1000 * 60 * 30
    }
}))

使用场景

用于微信访问时验证是否含有code或code是否重复,不含code则请求服务获取code,code重复时则拉取新code,获取code后存储到session

if(!req.query.code || (!!req.session.code && req.session.code == req.query.code)) return res.redirect('url/wx_login?return_uri=' + return_uri + '&AppID=' + AppID + '&scope=' + scope);
req.session.code = req.query.code;

疑问

  1. 存储到req.session的code刷新后丢失,无法于req.query.code做对比判断code是否重复
  2. 发现req.sessionID在页面刷新后变更,是否应该与之前的连接相同
  3. 后端获取req.cookies一直显示undefined,是否cookie有问题
阅读 2.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题