托管在 heroku 上的前端应用程序不存储从后端发送的 cookie



我有一个flask后端和react前端的全栈应用程序。我一直在处理用户会话和用户身份验证的方式是通过使用flask-session。基本上,我使用redis和flask-session来创建一个服务器端会话,我用它来存储用户的各种信息。

在本地环境中,当用户登录时,在用户的浏览器中设置一个名为session的cookie和一个随机的session值。

这个cookie然后在每个后续请求中发送给后端服务器,这样后端服务器就可以从Redis中检索到正确的会话。

但是,当我将应用程序部署到heroku上时,登录后前端应用程序上没有设置cookie。

如果有人知道这是为什么以及如何防止,我将非常感激。

(注:经过研究,我发现很少有人说这是因为heroku网站的域名在公共后缀列表上,这就是为什么你不能为他们设置cookie -但我甚至购买了一个自定义域名并设置了它,我仍然面临这个问题。

检查您是否在前端和后端使用相同的域。cookie默认设置为SameSite,这意味着如果域名不匹配,浏览器将不会在您的前端请求中发送它们

https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Headers/Set-Cookie/SameSite

它可能在本地主机上工作,因为域是"localhost"对于前端和后端。

你可以试试:https://medium.com/nirman-tech-blog/sharing-cookies-between-different-domains-d3faec71e038

如果是子域,在设置cookie时可以使用Domain=*.yourdomain.com。如果它不能工作,你需要在请求体上发送数据。

查看浏览器的控制台,看看它是否发出了警告。

相关内容

  • 没有找到相关文章

最新更新