我有一个fullstack应用程序,有一个flask后端和一个react前端。我处理用户会话和用户认证的方式是通过使用flask-session。本质上,我使用redis和flask-session创建一个服务器端会话,用于存储用户的各种信息。
在本地环境中,当用户登录时,在用户的浏览器中设置具有会话名称和随机会话值的cookie。
这个cookie随后在每次后续请求时被发送到后端服务器,这样后端服务器就能够从Redis中检索正确的会话。
然而,当我将我的应用程序部署到heroku上时,在登录时,前端应用程序上没有设置cookie。
如果有人知道这是为什么,以及如何防止这种情况,我将不胜感激。
(P.S.,经过研究,我发现很少有人说,这是因为heroku网站的域名是在公共后缀列表,这就是为什么你不能为他们设置cookie-但我甚至购买了一个自定义域,并设置它,我仍然面临这个问题。
1条答案
按热度按时间oiopk7p51#
检查前端和后端是否使用相同的域。默认情况下,Cookie设置为SameSite,这意味着如果域不匹配,浏览器不会在前端请求中发送它们
https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Headers/Set-Cookie/SameSite
它可以在localhost上工作,因为前端和后端的域都是“localhost”。
你可以试试这个:https://medium.com/nirman-tech-blog/sharing-cookies-between-different-domains-d3faec71e038
如果是子域名,你可以在设置cookie时使用
Domain=*.yourdomain.com
。如果它不起作用,你需要在请求体上发送数据。查看浏览器的控制台,看看它是否会发出警报。