express的session无法存入cookie,但是在控制台中又显示设置了cookie

图片描述

控制台中看的到有cookie呀,但是cookie没有存进去,

node部分

app.use(cookieParser("keyboard cat"))
  app.use(session({
    name:'snat',
    secret: 'keyboard cat', 
    cookie: ({ maxAge:  60000 }),
    resave: false,
    saveUninitialized: true
  }))
app.post('/api/user/login', function (req, res) {
      let name=req.body.name
      let pwd =req.body.pwd
    db.userModel.findOne({name: req.body.name}, function(err, doc){
        if(!err){
          if(!doc){
            res.json({code:100})//账号不存在
            return
          }else{
            if(pwd != doc.pwd){
              res.json({code:200})//密码不正确
              return
            }else{
              res.json({code:300})//登录成功
              req.session.name=name
              console.log(req.session.name)
            }
          }
        }else{
          console.log('连接超时')
        }
    })
  })
app.post('/api/user/signup', function (req, res) {
    if(req.session.name){
      console.log(req.session.name)
    }else{
      console.log('shibai')
    }
})

服务端没有问题,登录验证都能进行,第一个req.session.name能正常打印,第二个post就获取不到值了

前台是用的proxy做的跨域,用的fetch发送

    onhandleConfirm=()=>{
        const form =this.props.form;
        const name = form.getFieldValue('user')
        const password = form.getFieldValue('password')
        fetch('/api/user/login',{
            method:"POST",
            body: JSON.stringify({
                name: name,
                pwd: password,
              }),
              headers: {
                'Content-Type': 'application/json'
              }
        })
        .then(function(res){
            return res.json()
    
          }).then(function(res){
              console.log(res.code)
          })

求大神给个思路呀

阅读 3.7k
2 个回答

我这里的原因找到了,需要设置fetch里的credentials

数据返回过去了才设置session
这样写

req.session.name=name
console.log(req.session.name)
res.json({code:300})//登录成功
              
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进