此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.exeGoogleUpdate2.exe.
    这将导致 Chrome 找不到更新包。
  • 更新标志- 打开 Chrome 并输入:chrome://flags
    搜索#same-site-by-default-cookies禁用标志

以上是此Set-Cookie未指定“SameSite”属性,默认为“SameSite=Lax”-Localhost的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>