目前,我正在进行一个单独的项目,但我遇到了一个与标题相同的问题。
客户端使用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应用程序
Chrome网络CookieHeaders
正在等待经验丰富的开发人员的建议。
任何意见都可以。
请帮帮我。
当且仅当通过HTTPs进行连接时,应设置安全属性。因此,如果您将其更改为false,那么它应该在开发环境中工作。
cookie: {
secure: false
}
来自快速会话文档:
cookie.secure指定"安全集Cookie"属性的布尔值。如果为true,则设置"安全"属性,否则不设置。默认情况下,不会设置"安全"属性。
请注意,将此设置为true时要小心,因为如果浏览器没有HTTPS连接,兼容的客户端将来不会将cookie发送回服务器。
文档链接:https://www.npmjs.com/package/express-session