此Set-Cookie未指定“SameSite”属性,默认为“SameSite=Lax”-Localhost
我是一名前端开发人员,正在开发一个应用程序,其中login/响应在客户端上放置了一个 Session-Cookie。由于用户“登录”,稍后的请求将被授权。
从 Chrome 80 开始
所有没有 SameSite 属性的 cookie 都将被视为已SameSite=Lax指定。换句话说,它们将仅限于第一方(同一域中的服务器和客户端)。如果您需要第三方 cookie(不同域上的服务器和客户端),则它们必须标有SameSite=None.
默认限制为第一方
Set-Cookie: cname=cvalue; SameSite=Lax
在第三方上下文中允许
Set-Cookie: cname=cvalue; SameSite=None; Secure
对于我的应用程序,我想要默认行为。我的客户端和服务器在生产中运行在同一个域上。但在开发中,我正在localhost(不同的领域)工作。
到目前为止,chrome 在chrome://flags- SameSite 默认下有一个特殊的标志cookies。我可以在我的开发机器上启用这个标志并且登录通过了。在生产中,我不需要这个标志,因为我想要默认行为。
从 Chrome 91 开始
删除了默认情况下的SameSite cookie标志。这意味着从这个版本开始,我无法登录我的应用程序,除非将其部署到生产环境中。
有谁知道如何在从本地主机工作时获取 Session-Cookie。但仍然保持SameSite=Lax. 如果可能,只对客户端进行更改,但如果需要,也可以对服务器进行更改。
Chrome DevTools - SameSite 错误消息
Chrome 80 标志菜单 - 这些标志在 Chrome 91 中被删除
回答
解决方法:降级 Chrome
这不是解决方案!对于像我这样的人来说,这只是一个临时解决方法,他的工作是如何因此更新而停止的。
- 卸载 Chrome
转到“添加或删除程序”并卸载 Chrome。请注意,cookie 和保存的浏览器密码等用户数据可能会丢失。 - 从slimjet.com或任何其他站点下载 Chrome v90。然后安装 Chrome。
- 根据此StackOverflow解决方案,防止自动更新Chrome :
打开C:Program Files (x86)GoogleUpdate
将文件重命名GoogleUpdate.exe为GoogleUpdate2.exe.
这将导致 Chrome 找不到更新包。 - 更新标志- 打开 Chrome 并输入:
chrome://flags
搜索#same-site-by-default-cookies并禁用标志
THE END
二维码