当前,我在一个单独的项目中,但是遇到了一个与标题相同的问题。
客户端在使用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。
等待经验丰富的开发人员的建议。
任何意见都很好。
请帮助我。
答案 0 :(得分:0)
仅当通过HTTP建立连接时,才应设置secure属性。因此,如果将其更改为false,它应该可以在开发环境中工作。
cookie: {
secure: false
}
从快速会话文档中获取:
cookie.secure 指定Secure Set-Cookie属性的布尔值。如果为真,则设置安全属性,否则,则不设置。默认情况下,未设置安全属性。
将其设置为true时请注意,因为如果浏览器没有HTTPS连接,则兼容的客户端将来不会将cookie发送回服务器。