所以我正在开发一个项目,前端是在 vercel 上托管的 Next.JS,后端是在 heroku 上托管的 Express.JS。
我正在使用 Express-Session 和 Passport JS 来存储会话。
在前端,我使用 axios 进行 HTTP 调用。会话的 cookie 正在 Chrome 上保存,但在 Safari 上却没有保存。我浏览了多个 StackOverflow 帖子,但没有一个起作用。 Safari 正在接收标头中的 cookie,但不保存 cookie
这里可能出现什么问题?
好吧,事实证明发生这种情况的原因是 Safari 不允许跨域 cookie。因此,解决此问题的唯一真正方法是将后端和前端托管在同一域的不同子域上。
如果您无法将它们部署在同一域中,您可以在 Safari 设置(移动设备和浏览器)中关闭
Prevent Cross-Site Tracking
,以使其与第 3 方域 cookie 一起使用。
我自己刚刚遇到这个问题,我分别部署了前端(vite/react)和后端(express)应用程序。我遇到了完全相同的问题,我的应用程序在 Chrome、ME 和 Firefox 上按预期工作,但在 Safari 上无法工作。
@zhanymkanov - 您禁用“防止跨站点跟踪”设置的解决方案使应用程序在 safari 中按预期工作,但当然并不理想。
是否有任何更新/其他解决方案可以使存储 cookie 在 Safari 中正常工作。
我的前端和后端都已经部署了渲染。