【发布时间】:2021-07-24 21:11:12
【问题描述】:
我无法使用我的 MERN 堆栈应用程序在浏览器中设置会话 cookie。当 express 服务器和 react 前端都在本地运行时,cookie 设置没有问题。在我将 express 后端部署到 heroku 后,问题就出现了。我尝试将“sameSite”cookie 选项设置为“lax”或false,但问题仍然存在。
这是我用于快速会话的配置。
sessionConfig = {
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: true,
cookie: {
secure: false,
httpOnly: true,
expires: expiryDate,
sameSite: "lax",
},
store: MongoStore.create({
mongoUrl: process.env.MONGO_CONNECTION_STRING,
}),
}
app.set("trust proxy", 1);
app.use(cors({ origin: true, credentials: true }));
app.use(session(sessionConfig));
编辑:进一步澄清。如果我从浏览器访问我的 express 应用程序的根路由,即使应用程序已部署,cookie 也会正常设置。(IE:如果我输入已部署的 heroku 应用程序的 url,则会话 cookie 已设置)如果我拨打电话从本地运行的反应前端(使用 fetch api)到部署的后端,cookie 没有设置。这让我认为这可能与相同的站点 cookie 选项有关。
【问题讨论】:
标签: javascript node.js reactjs express heroku