通过域访问应用程序时,express.session 不会在 iOS Safari 上设置 cookie

Chr*_*der 6 safari heroku node.js express express-session

我有一个托管在 Heroku 上的 Node/Express 应用程序,该应用程序有一个我为其购买的域。在我的桌面上使用该应用程序时,它运行良好。当我访问它的域https://myapp.app或直接在 Heroku 上托管的位置https://myapp.herokuapp.com时,我可以正常登录

但是,当我在移动 iOS 上的 Safari 上访问该应用程序的域 ( https://myapp.app ) 时,它不会验证请求。登录好像没有设置cookie。然而,当我通过 Heroku URL( https://myapp.herokuapp.com )访问该应用程序时,我可以正常登录。登录https://myapp.herokuapp.com后,它会让我保持登录状态https://myapp.app ,并且只有在https://myapp.herokuapp.com登录一次后,它才会让我保持登录状态登录https://myapp.app

这是我的快速会话代码。我也使用 Passport.js 进行身份验证。

app.use(session({ 
    secret: 'cat', 
    resave: false, 
    saveUninitialized: true,
    proxy: true,
    cookie: { 
        sameSite: 'none',
        secure: process.env.NODE_ENV == "production" ? true : false
    }
}));
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

小智 0

这对我有用:

app.use(
  session({
    name: SESS_NAME,
    resave: false,
    saveUninitialized: false,
    store: new MongoStore({mongooseConnection: db}),
    secret: SESS_SECRET,
    proxy: true,
    cookie: {
      maxAge: 1000 * 60 * 24, // 24 hours
      secure: true,
      httpOnly: true,

    },
  })
);
Run Code Online (Sandbox Code Playgroud)