Chrome没有为localhost发送任何cookie



我在Max OS Catalina 10.15.7上运行Chrome 91.0.4472.77版(官方版本((x86_64(。

我有一个前端和后端,分别位于fe.example.com和be.example.com(不是真的(。当我访问fe.example.com时,我看到许多cookie被列为.example.com,这些cookie都包含在be.example.com的后端请求中。

但是,对于本地开发,我有一个/etc/hosts记录映射localhost.example.com作为127.0.0.1的别名。我创建了一个本地CA,并指示操作系统信任它,用它生成证书,当我访问https://localhost.example.com,Chrome表示这是一个安全可信的连接。当我点击锁定图标并选择"锁定"时;Cookies";,我可以看到我关心的所有cookie都列在";允许的";选项卡中没有列出它们;被阻止";在DevTools网络选项卡中没有列出请求;具有被阻止的cookie的请求";盒但是:

没有cookie随任何请求一起发送。后端无法识别其接收到任何cookie,并且网络选项卡在请求标头下根本没有列出cookies标头"复制为cURL";还生成一个没有cookie的命令。在CCD_ 4的"网络"选项卡中的每个请求都有一个";Cookie";提供了关于为什么每个cookie都被包括/没有被包括的详细信息的子选项卡,从localhost.example.com发送的请求实际上没有"cookie";Cookie";标签。

这似乎与过去的这个bug非常相似。这个chrome://flags/#network-服务标志在我的Chrome版本中不再存在(这是最新的(chrome://flags/#site-隔离试验选择退出标志并没有解决这个问题(而且启动起来似乎相当危险(。

我不知道这两个网站之间的区别因素是什么,但我唯一能想象的是,这与一个域名解析为环回地址,而另一个则不解析有关。我尝试过搜索有关Chrome以不同方式对待localhost的任何信息,我发现的所有信息都表明Chrome应该对localhost上的cookie更加宽容,而不是更少。顺便说一句,如果我将localhost.example.com指向本地运行的localbe.example.com,而不是将其指向be.example.com.,则行为是相同的

我试过翻转我能找到的所有与饼干相关的实验标志,但都无济于事。我还注意到Firefox的行为是一样的,至少从fe.example.com传输cookie,而不是从localhost.example.com发送cookie;被阻止">

关于如何让Chrome在本地开发环境中发挥作用,有什么想法吗?

注意:这篇SO帖子看起来很相似,但我认为它不相关,因为我总是用一个包含多个部分的域名来指代我的本地服务器。

编辑:如果我将域名映射到我的专用LAN IP地址而不是127.0.0.1,问题仍然存在。

这完全是转移注意力,实际上是一个角度问题,而不是浏览器配置问题。角度前端没有明确设置withCredentials标志。在我们部署的环境中,这并不重要,因为FE和BE是通过负载均衡器从同一端口提供服务的。在这种情况下,默认情况下会有人(Angular或浏览器?(发送cookie。如果主机完全不同,即使在端口上也是如此,则需要在XHR请求上显式设置此配置。

尝试这个

open -a "Google Chrome" --args --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure

最新更新