繁体   English   中英

Cookie 设置到不同的域(Node.js、Angular)

[英]Cookies are set into different domain (Node.js, Angular)

我正在使用 Angular 和 Node.js (Express) 开发 Web 应用程序,但我遇到了 cookie 问题——它们被设置到我的后端域而不是我的前端。

当我向/auth endpoint发出POST request ,服务器将返回 HttpOnly cookie - 一个是 JWT,第二个是刷新令牌。 当我在 chrome 中检查网络选项卡时,我可以看到服务器将这些 cookie 发回了,但是当我检查应用程序 > 存储 > Cookies 时,这里什么也没有。

我发现,cookie 设置在我的后端域上。 (app-backend.com而不是app.com)它们只是简单地与我的后端域相关联。

奇怪的是,我的应用程序在我的计算机上运行得很好,但是当我切换到我的手机时,cookie 不是从那里发送的(我使用 iPhone 和 Safari 或 Chrome)。 此外,当我在本地主机开发服务器上运行我的应用程序时,一切正常。

我试图将 cookie 配置中的域设置为我的前端域,它根本不起作用。

另外,Chrome 用此消息警告我,我不知道它是否与我的问题有关

与“我的域”中的跨站点资源关联的 cookie 设置为没有SameSite属性。 如果使用SameSite=NoneSecure进行设置,Chrome 的未来版本将仅提供具有跨站点请求的 cookie。 您可以在应用程序>存储>Cookies 下的开发人员工具中查看 cookie,并在https://www.chromestatus.com/feature/5088147346030592https://www.chromestatus.com/feature/5633521622188032 上查看更多详细信息。

这是我在github上的代码:

前端: https : //github.com/TenPetr/dashboard

后端: https : //github.com/TenPetr/dashboard_backend

谢谢你的建议。

您正在设置SameSite=None; Secure SameSite=None; Secure您的production.json中的属性,这是正确的。 但是,根据您的 iOS / Safari 版本,您可能会遇到不兼容问题,其中 cookie 被错误地视为SameSite=Strict

在您的开发设置中,您是:不设置SameSite=None; Secure SameSite=None; Secure ,并且可能正在使用算作相同站点的 URL,例如,在localhost提供服务可能会导致一些奇怪的 cookie 行为。

我会尝试在没有SameSite=None属性的情况下测试您的生产配置。 如果这随后开始在 Safari 上工作,那么您就遇到了该错误。 您可以通过设置两个版本的 cookie 或添加用户代理嗅探来缓解这种情况。 https://web.dev/samesite-cookie-recipes上有更多详细信息

或者,如果在后端服务器不是用户实际访问的站点时尝试从后端服务器设置 cookie,您可能会遇到Safari cookie 策略问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM