【问题标题】:Why is my cookie not being saved on Safari but being saved on Chrome?为什么我的 cookie 没有保存在 Safari 上,而是保存在 Chrome 上?
【发布时间】:2022-11-06 13:48:37
【问题描述】:
所以我正在做一个项目,前端是在 Vercel 上托管的 Next.JS 上,后端是在 Heroku 上托管的 Express.JS 上。
我正在使用 express-session 和护照 JS 来存储会话。
在前端,我使用 axios 进行 HTTP 调用。会话的 cookie 保存在 Chrome 上,但在 Safari 上没有保存。我浏览了多个 StackOverflow 帖子,但没有一个有效。 Safari 正在接收标头中的 cookie,但没有保存 cookie
这是我在 express 上的 cors 配置
这里可能是什么问题?
【问题讨论】:
标签:
express
cookies
axios
safari
【解决方案1】:
好吧,事实证明发生这种情况的原因是因为 Safari 不允许跨域 cookie。因此,解决此问题的唯一真正方法是将后端和前端托管在同一域的不同子域上。
【解决方案2】:
如果您无法在同一个域中部署它们,您可以在 Safari 设置(移动设备和浏览器)中关闭 Prevent Cross-Site Tracking 以使其与第 3 方域 cookie 一起使用。