微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

会话cookie集`SameSite = None;安全;`不起作用

如何解决会话cookie集`SameSite = None;安全;`不起作用

添加了SameSite = None;安全;设置cookie。但是未设置Cookie,因此无法登录到我的网站。

response.writeHead(200,{
  'Content-Type': 'application/json','Set-Cookie': 'token=' + token + '; SameSite=None; Secure; Expires=' + time.toUTCString() + '; Path=/' + '; Domain=' + hostname,'csrf-token': csrftoken
});

我查看了开发人员工具中“应用程序”>“存储”>“ Cookies”下的cookie,并查看了更多详细信息。它显示警告消息:

此set-cookie被阻止,因为它不是通过安全连接发送的

chrome阻止cookie,因为我在开发环境中工作并且发送http请求。但是此测试在Firefox浏览器上正确登录
我在cookie中放入了安全一词,并且可以正常使用,但是因为 samesite = none 旁边必须使用安全一词,所以>跨域,否则Cookie将被阻止。
我的问题是为什么当我使用安全时,只有Chrome浏览器会阻止cookie,而在其他浏览器中却是如此。 而且,如果我不使用安全,那么我将无法测试支付网关,因为如果我不使用安全协议,它将阻止Chrome异域访问。

解决方法

我的问题是为什么当我使用安全时,只有Chrome浏览器会阻止 cookie,但在其他浏览器中确实如此

我不确定其他浏览器,但Chrome实施了根据此IETF draft通过安全连接允许具有secure属性的cookie的策略。

虽然此草案是为Chrome实施的,但不是在Firefox上,这就是为什么您在Firefox中转到about:config > network.cookie.sameSite.noneRequiresSecure的原因,默认值为 false

如果您只需要针对本地开发环境执行此操作,则可以通过禁用

来保留chrome中Cookie的旧行为。
  1. chrome:// flags /#same-site-by-default-cookies
  2. chrome:// flags /#cookies-without-same-site-must-be-secure

我必须支持旧版HTTP客户端,但是如果我使用https://来源 安全,我无法从http设置cookie,而且我无法访问它 来自http的cookie,我的目标是拥有SameSite = None,在http和 在http://来源,任何想法上都不安全,而不是建立 谷歌办公室附近发生抗议?

鉴于这将在不久的将来成为标准,我怀疑您是否能够为客户端应用程序实现这种行为,只有路由是安全的HTTPS。

参考:

  1. https://web.dev/samesite-cookies-explained/#changes-to-the-default-behavior-without-samesite
  2. https://redmondmag.com/articles/2020/01/28/samesite-cookie-changes-break-apps.aspx
,

Sometome cookie无法正常工作,因为某些cookie滥用了sameSite属性。 Cookie SomeCookie被拒绝的原因是它具有sameSite=none属性,但缺少secure属性。因此,任何请求SameSite=None的cookie都必须标记为Secure

Set-Cookie: product=pen; SameSite=None

要解决此问题,必须将Secure属性添加到SameSite=None cookie中。

Set-Cookie: flavor=choco; SameSite=None; Secure

安全Cookie仅通过HTTPS协议以加密请求发送到服务器。

注意:不安全的网站(http:)无法使用Secure指令设置Cookie。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。