你有你的饼干{安全:真}这需要浏览器使用 HTTPS 连接来随请求发回会话 cookie。但建议确保它适合您的测试环境,确保您在两台设备上都使用 HTTPS
https://www.npmjs.com/package/express-session#cookiesecure https://www.npmjs.com/package/express-session#cookiesecure
还可以使用开发或生产模式,并在每次重新启动后更改秘密更改后重新启动 Express(使用函数 [crypto.randomBytes(20).toString('hex')] 而不是静态密钥)导致客户端重启后会话ID失效;无论如何,这都不重要,因为您没有持久会话设置,因此任何重新启动都会擦除所有会话。如果您需要持久会话,请检查使用 memcached、数据库或文件而不是进程内存
https://www.npmjs.com/package/express-session#store https://www.npmjs.com/package/express-session#store
更新2022-10-19
使用 NGINX 作为前端的示例会话,当我偶然发现这一点时,我最终将其用于我的项目,我的 node.js/express 在 nginx>node.js 之间没有 SSL 设置并使用上游。
必须信任代理,我最终删除了:
// app.set('trust proxy', 1) // trust first proxy
并将其添加到会话中
let session = require('express-session');
let memsession = require('connect-memcached')(session);
let sessionMiddleware = session({
secret : config.sessionSecret,
key : 'sid',
cookie: {
maxAge : (86400 * 30 * 1000), // 30 days
},
proxy : true,
resave : true,
rolling : true,
saveUninitialized: true,
store : new memsession({
hosts: ['127.0.0.1:11211'],
// secret: '_secret_' // Optionally use transparent encryption for memcache session data
})
});
不过,我不确定我们是否能让所有旧版 iPad 正常工作,但我们确实让我的 iPad 正常工作并转移了项目