gpt4 book ai didi

node.js - Safari 中的快速 session 为空

转载 作者:搜寻专家 更新时间:2023-11-01 00:04:13 26 4
gpt4 key购买 nike

我正在使用 express 构建一个 Node.js 应用程序。我使用 express-session 进行 session 。我在 session 中存储的数据在 IE、Chrome 和 Firefox 中可用。但在 Safari 中, session 一直是空的。所以当我执行 console.log(req.session) 时,它会打印:

Session {
cookie: {
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: true
},
userHasCheckCorrect: true
}

这是我在 server.js 中的设置

app.use(session({
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: true,
cookie: {
secure: true,
httpOnly: true
}
}));

这是一个带有 SSL 证书的服务器,所以它是一个 HTTPS 域。使用 HTTP,它似乎在 Safari 中运行良好。我在这里做错了什么?有没有我缺少的设置?我看过很多地方,但还没有找到答案。为什么它适用于除 Safari 以外的所有浏览器?

最佳答案

对于 Safari,它需要传递凭据:请求 header 中的“include”,否则它不会发送 cookie。

您可能还想在设置 session 中间件后设置全局响应 header ,如下所示:

app.use(function(req, res, next) {
res.set('credentials', 'include');
res.set('Access-Control-Allow-Credentials', true);
res.set('Access-Control-Allow-Origin', req.headers.origin);
res.set('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.set('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');
next();
});

关于node.js - Safari 中的快速 session 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50717702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com