繁体   English   中英

Express-Session 在生产/部署中不起作用

[英]Express-Session not working in production/deployment

Express-Session 在开发环境中工作,因为它在我的浏览器中设置了“connect.sid”cookie。 但是,在生产中,它不会存储 cookie,而是使用相同的 session - 它每次都会创建一个新的。 我相信如果我能以某种方式保存第三方 cookies,这个问题就会得到解决,因为我的应用程序是使用 Heroku 部署的。 最后,我还使用 express-cors 来避免 CORS 问题(不知道这是否与 cookie 问题有关)。 我在 cors 中设置了 {credentials: true},在 Axios 中也设置了 {withCredentials: true}。

已解决的问题:-> 添加相同站点:'none' 用于生产的完整 Cookie 配置(快速会话):

cookie: { httpOnly: true, secure: true, maxAge: 1000 * 60 * 60 * 48, sameSite: 'none' }

Heroku 使用反向代理。 它提供 https 端点,然后将未加密的流量转发到网站。

尝试类似的东西

app.enable('trust proxy')

并查看https://expressjs.com/en/guide/behind-proxies.html

向 session 配置添加“名称”属性对我有用:

{
    secret: process.env.SESSION_SECRET,
    resave: false,
    saveUninitialized: true,
    proxy: true, // Required for Heroku & Digital Ocean (regarding X-Forwarded-For)
    name: 'MyCoolWebAppCookieName', // This needs to be unique per-host.
    cookie: {
      secure: true, // required for cookies to work on HTTPS
      httpOnly: false,
      sameSite: 'none'
    }
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM