这个问题一直让我抓狂。我在前端使用 React 和 Apollo (GraphQL),并cookie-session在后端使用 Passport.js 和 Express 进行身份验证。在桌面上的任何浏览器(尚未测试 safari)上,一切都可以完美运行,但是 cookie 不会保存在 IOS 上,并且用户无法登录。passport-local仅当使用 和 且浏览器尚未有 cookie 时才会出现此问题。如果我使用登录passport-google或passport-facebook它有效,那么如果我注销并passport-local再次使用,即使它是不同的用户,它也有效。另外,如果我进入设置并关闭 IOS Safari 的“防止跨站点跟踪”,它第一次就能工作,但是如果我想将其用作 PWA,则无法将其关闭。
我的快速设置如下所示(省略所有导入):
app.use(
cookieSession({
maxAge: 24 * 60 * 60 * 1000 * 30,
keys: [process.env.COOKIE_KEY],
overwrite: true
})
);
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
const whitelist = [
"https://toomanylists.com",
"https://www.toomanylists.com"
];
app.use(
cors({
origin: (origin, callback) => {
console.log(origin);
if (whitelist.indexOf(origin) !== -1 || !origin) {
callback(null, true);
} else …Run Code Online (Sandbox Code Playgroud)