首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此Set-Cookie没有指定"SameSite“属性,默认为"SameSite=Lax”- Localhost。

此Set-Cookie没有指定"SameSite“属性,默认为"SameSite=Lax”- Localhost。
EN

Stack Overflow用户
提问于 2021-06-03 12:44:09
回答 5查看 22.4K关注 0票数 25

我是一个前端开发人员,在开发一个应用程序时,login/响应会在客户端上放置一个会话Cookie。之后的请求将被授权,因为用户“登录”。

从Chrome 80开始

所有没有SameSite属性的cookie都将被视为指定了SameSite=Lax。换句话说,它们将仅限于第一方(服务器和客户端在同一域中)。如果您需要第三方cookie(不同域上的服务器和客户端),则必须用SameSite=None标记它们。

在默认情况下仅限于第一当事方

代码语言:javascript
复制
Set-Cookie: cname=cvalue; SameSite=Lax

允许在第三方上下文中

代码语言:javascript
复制
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连接的诅咒。安全连接也有自己的问题,比如必须在开发中支付证书。

EN

回答 5

Stack Overflow用户

发布于 2021-06-06 12:02:55

解决办法:降低Chrome的评级

这不是解决办法!对于像我这样的人来说,这只是一个暂时的解决办法,因为这次更新,他的工作是如何停止的。

  • 卸载Chrome转到“添加或删除程序”并卸载Chrome。注意,像cookie和保存的浏览器密码这样的用户数据可能会丢失。
  • slimjet.com或任何其他站点下载Chrome v90。然后安装Chrome。
  • 阻止自动更新 Chrome,根据StackOverflow解决方案: 开放C:\Program Files (x86)\Google\Update 将文件GoogleUpdate.exe重命名为GoogleUpdate2.exe。 这将导致Chrome找不到更新包。
  • 更新标志-打开Chrome和类型:chrome://flags 搜索#same-site-by-default-cookies禁用标志
票数 4
EN

Stack Overflow用户

发布于 2021-07-01 11:30:43

我找到了一种方法来修复它,并与大家分享:)

说明见“问题”一节:

如果应该在跨站点请求中发送cookie,请指定SameSite=None和Secure。这使得第三方可以使用.

在Developer Tools部分,转到Application选项卡,左侧转到Cookies:

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

我希望这能照亮你的一天

票数 3
EN

Stack Overflow用户

发布于 2022-11-11 22:46:27

截至Chrome v107 (2022年11月)

我也遇到了类似的问题,花了几个小时的时间来研究,我发现Chrome的唯一解决方案是使前端连接安全(例如https (使用代理):链接 )。

的替代解决方案是使用Firefox并设置:about:config > network.cookie.sameSite.noneRequiresSecure=false。这允许SameSite=None; Secure=false

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67821709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档