You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAEN应用中Passport.js设置secure:true时无法发送会话Cookie的问题

Passport.js 跨域会话Cookie传递异常问题

环境与配置信息

  • 身份认证方案:Passport.js

  • CORS配置:

    app.use(cors({ origin: ENV, credentials: true }));
    

    其中ENV配置为前端部署URL(前端部署在Vercel),后端部署于Back4App。

  • Express会话及相关配置:

    app.set("trust proxy", 1);
    app.use(cookieParser());
    app.use(
      session({
        secret: "wonttellyou",
        resave: false,
        saveUninitialized: false,
        cookie: {
          path: "/",
          httpOnly: true,
          maxAge: 1000 * 60 * 60 * 24,
          sameSite: "none",
          secure: true,
        },
      })
    );
    app.use(express.urlencoded({ extended: true }));
    app.use(passport.initialize());
    app.use(passport.session());
    

问题现象

  • 当会话Cookie的secure属性设为false时,Firefox中认证流程正常,但Chrome强制要求该属性必须为true
  • 将secure设为true后,后端会话已成功创建(req.sessionStore.sessions显示内容如下),但前端无法接收到Cookie:

    izFjwfnGUAVrRSJU1eWJqzOTEeGI-Cmz':
    '{"cookie":{"originalMaxAge":86400000,"expires":"2023-09-03T16:19:15.519Z","secure":true,"httpOnly":true,"path":"/","sameSite":"none"},"passport":{"user":"643026b271b721a7aa08f4fd"}}'

已尝试的解决操作

  • 修改CORS的origin、exposedHeaders配置参数
  • 多次调整Express Session的各项配置
  • 尝试通过res.cookie直接发送Cookie,此方式可正常传递
  • 确认前端请求已携带withCredentials标识
  • 经多次尝试,问题仍未解决

内容的提问来源于stack exchange,提问作者Nuss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 20:22:05