我是一个前端开发人员,在开发一个应用程序时,login/响应会在客户端上放置一个会话Cookie。之后的请求将被授权,因为用户“登录”。
从Chrome 80开始
所有没有SameSite属性的cookie都将被视为指定了SameSite=Lax。换句话说,它们将仅限于第一方(服务器和客户端在同一域中)。如果您需要第三方cookie(不同域上的服务器和客户端),则必须用SameSite=None标记它们。
在默认情况下仅限于第一当事方
Set-Cookie: cname=cvalue; SameSite=Lax允许在第三方上下文中
Set-Cookie: cname=cvalue; SameSite=None; Secure对于我的应用程序,我需要默认的行为。我的客户机和服务器在production中运行在相同的域中。但是在开发中,我是从localhost (不同领域)工作的。
到目前为止,chrome在默认情况下在chrome://flags - SameSite下有特殊标志cookies。我可以在我的开发机器上启用这个标志,然后登录就通过了。在生产中,我不需要这个标志,因为我想要默认的行为。
从Chrome 91开始
默认情况下,删除了SameSite 标志。这意味着,从这个版本,我不能登录到我的应用程序,不部署到生产。
有谁知道我在本地工作的时候怎么能得到会话饼干吗?但仍然保持着SameSite=Lax的安全性。如果可能的话,只对客户端进行更改,但如果需要,也可以对服务器进行更改。

Chrome DevTools - SameSite错误消息

Chrome 80旗帜菜单-在Chrome 91中删除这些标志
更新
我试图通过让服务器使用SameSite=None (仅限于开发)来解决这个问题。这会导致一个不同的错误:Connection isn't secure。这是因为在使用SameSite=None时,需要添加后缀Secure和使用HTTPS连接的诅咒。安全连接也有自己的问题,比如必须在开发中支付证书。
发布于 2021-06-06 12:02:55
解决办法:降低Chrome的评级
这不是解决办法!对于像我这样的人来说,这只是一个暂时的解决办法,因为这次更新,他的工作是如何停止的。
C:\Program Files (x86)\Google\Update
将文件GoogleUpdate.exe重命名为GoogleUpdate2.exe。
这将导致Chrome找不到更新包。chrome://flags
搜索#same-site-by-default-cookies和禁用标志发布于 2021-07-01 11:30:43
我找到了一种方法来修复它,并与大家分享:)
说明见“问题”一节:
如果应该在跨站点请求中发送cookie,请指定SameSite=None和Secure。这使得第三方可以使用.

在Developer Tools部分,转到Application选项卡,左侧转到Cookies:
您想要与其他域共享的cookie,标记安全检查,在Samesite中不放置任何内容。在本地更新“站点”选项卡,您将能够使用可以通过原始域发送的cookie。

我希望这能照亮你的一天
发布于 2022-11-11 22:46:27
截至Chrome v107 (2022年11月)
我也遇到了类似的问题,花了几个小时的时间来研究,我发现Chrome的唯一解决方案是使前端连接安全(例如https (使用代理):链接 )。
的替代解决方案是使用Firefox并设置:about:config > network.cookie.sameSite.noneRequiresSecure=false。这允许SameSite=None; Secure=false
https://stackoverflow.com/questions/67821709
复制相似问题