[英]I can't set the SameSite attribute of the cookie to None in Nodejs (Express)
[英]Express doesn't set-cookie when SameSite is none
我已经阅读了很多其他类似的问题,但我无法解决问题。
我的设置是 Node + Express + PassportJs,一切都在开发中,但我在生产中遇到了问题。
使用以下代码,我看到会话 cookie 在响应中发回,但我也收到一条消息,说它不会被应用,因为SameSite
是松散的(默认)并且响应来自另一个站点(前端和后端没有相同的来源)。
app.use(
session({
secret: "foo",
resave: false,
saveUninitialized: false,
store: MongoStore.create({ mongoUrl: process.env.MONGO_DB_CONN_STRING! }),
cookie: { httpOnly: true }
})
);
所以我把它改成这样,以便在生产中指定SameSite
和Secure
,但此时,不再设置 cookie!
app.use(
session({
secret: "foo",
resave: false,
saveUninitialized: false,
store: MongoStore.create({ mongoUrl: process.env.MONGO_DB_CONN_STRING! }),
cookie: isProduction ? { httpOnly: true, sameSite: "none", secure: true } : {} // <-- only change
})
);
可能是什么原因? 我试图通过玩 CORS(没有成功)和其他 100 件事来修复它。 然而,我似乎缺少一些怪癖。
根据您使用什么服务来部署您的 API(netlify、render.com、heroku 其他...),您必须启用代理
this.app.enable('trust proxy');
它解决了我的问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.