在身份验证期间阻止第 3 方 cookie

问题描述 投票:0回答:1

我有一个 React Web 应用程序,它有两个独立的 git 存储库,并分别托管在 vercel 上。 前端 - https://reactapp.vercel.app 后端 - https://reactapp-server.vercel.app (以上链接仅是示例链接,不是我的网络应用程序)

基本上,当用户从前端输入用户名和密码时...我将其发送到后端...然后进行一些 mongoDB 检查...然后从后端,我创建 jwt 访问和刷新令牌以发送到客户端通过 httpOnly cookie 通过执行 res.cookie(.....),我给出的属性是 httpOnly: true、Secure : true 和 sameSite: “None”....我也尝试过“Lax”和“严格”,我还给出了域属性“.vercel.app”......但 cookie 永远不会保存在 IOS 上的 safari 浏览器中......主要是由于“防止跨站点跟踪”选项......这基本上阻止通过后端制作第三方cookie。但目前它适用于 chrome,但 chrome 也将很快完全删除第三方 cookie...

我不希望我创建的 cookie 被视为第三方 cookie,这样客户端浏览器就不会删除它们...我做了很多阅读,有些人建议我同时拥有我的前端和后端位于同一域/子域上?但我不太明白。

如果我在 IOS Safari 上关闭“防止跨站点跟踪”,身份验证工作流程将完美运行

javascript reactjs authentication cookies backend
1个回答
0
投票

您遇到的问题与不同浏览器处理不同域 cookie 的方式有关。当您的前端和后端托管在不同的域上时,您的后端设置的 cookie 将被视为第三方 cookie。某些浏览器(例如 Safari)严格禁止第三方 cookie,尤其是当“防止跨站点跟踪”选项打开时。

您可以使用相同的域来托管您的前端和后端,以解决此问题。通过这种方式,大多数浏览器通常接受的第一方 Cookie 将应用于您的后端设置的 Cookie。

© www.soinside.com 2019 - 2024. All rights reserved.