浏览器为什么无法存储Cookie?

时间:2020-09-29 13:50:03

标签: node.js express session cookies axios

当前,我在一个单独的项目中,但是遇到了一个与标题相同的问题。

客户端在使用HTTPS的React上。

服务器端位于带有HTTPS的Express上。并且它们是跨域的。

单击“提交”按钮时,下面的代码正在运行。

//client side

axios
  .post('https://ohmycounty.me/user/signin', {email : "byron@google.com", password: "example", {
    withCredentials: true,
})


//server side
app.use(session({

  secret: 'example',
  resave: false,
  saveUninitialized: true,
  cookie: {
    sameSite: 'none',
    secure: true
  }
}));

app.use(cors({
  origin: ['https://ohmycounty.xyz'],    // client app's url 
  credentials: true
}));


const { users } = require('../../models');

module.exports = {
  post: (req, res) => {
    console.log(req.session.userid)
    const {
      email,
      password
    } = req.body;

    let session = req.session;

    users.findOne({
      where: {
        email: email,
        password: password
      }
    }).then(result => {
      if (!result) res.status(401).send(JSON.stringify({
        status: false
      }))
      else {
        session.userid = result.id;
        res.status(201).json({
          id: result.id
        })
      }
    })
  }
}

在chrome开发人员工具应用程序上找不到任何connect.sid。

Chrome Applications

Chrome Network Cookie Headers

等待经验丰富的开发人员的建议。

任何意见都很好。

请帮助我。

1 个答案:

答案 0 :(得分:0)

仅当通过HTTP建立连接时,才应设置secure属性。因此,如果将其更改为false,它应该可以在开发环境中工作。

  cookie: {
    secure: false
  }

从快速会话文档中获取:

cookie.secure 指定Secure Set-Cookie属性的布尔值。如果为真,则设置安全属性,否则,则不设置。默认情况下,未设置安全属性。

将其设置为true时请注意,因为如果浏览器没有HTTPS连接,则兼容的客户端将来不会将cookie发送回服务器。

链接到文档:https://www.npmjs.com/package/express-session