【问题标题】:ASP.NET - Request.Cookies no longer working in Chrome V80+ASP.NET - Request.Cookies 在 Chrome V80+ 中不再工作
【发布时间】:2020-12-03 08:25:36
【问题描述】:

无疑与最近发布的 Chrome 同站点 cookie 政策有关,我现在在 ASP.NET 中更新 cookie 时遇到问题。


我有一个简单的 cookie 集合来存储基本的用户设置。 cookie 是使用下面的代码生成和更新的。

设置饼干

If Response.Cookies("Settings") IsNot Nothing Then
  Dim cookie As HttpCookie = Request.Cookies("Settings")
  cookie("Setting01") = ddl.SelectedValue
  cookie.Expires = Date.Now.AddDays(365)
  Response.Cookies.Add(cookie)
End If

第一次创建 cookie 时,它​​正确显示如下。

当设置被更新并且上面的代码第二次调用时,值被删除。


这仅发生在 Chrome 中,并且仅在我更新到 Chrome V84 之后发生

我最近在 web.config 中进行了以下更改以适应同一站点的要求。

<sessionState cookieless="false" cookieSameSite="None" />
<httpCookies httpOnlyCookies="true" sameSite="None" requireSSL="true" />

问题出在哪里?

这部分代码现在什么都不返回了

Request.Cookies("Settings")

【问题讨论】:

    标签: asp.net vb.net google-chrome cookies samesite


    【解决方案1】:

    解决方案

    此问题是由于在创建新 cookie 时未在代码中明确设置 SameSiteMode 造成的。

    If Response.Cookies("Settings") IsNot Nothing Then
      Dim cookie As HttpCookie = Request.Cookies("Settings")
      cookie("Setting01") = ddl.SelectedValue
      cookie.Expires = Date.Now.AddDays(365)
    
      cookie.SameSite = SameSiteMode.Lax
    
      Response.Cookies.Add(cookie)
    End If
    

    另外设置SameSiteMode.None 将不起作用。大概是为了强制这个 cookie 来自同一个站点。


    但是为什么?

    我仍然不完全明白为什么会这样,因为如果你在 web.config 中设置

    <httpCookies httpOnlyCookies="true" sameSite="Lax" requireSSL="true" />
    

    然后,您新创建的 cookie 在 Chrome 中被标记为 Lax,更改此设置如下所示:

    但是,如果您现在尝试从代码中读取该 cookie,其值将被删除。 这不是你在代码后面专门设置它的情况。

    我不确定是什么让 cookie 与众不同,更有可能是 .NET 处理此问题的方式存在问题。


    有关此答案的任何其他情报都会很有趣。

    【讨论】:

      【解决方案2】:

      截至 2020 年 8 月 11 日,Chromium 现在针对 100% 更改 SameSite cookie 的用户。 (来源:https://www.chromium.org/updates/same-site

      SameSite cookie 常见问题解答:https://www.chromium.org/updates/same-site/faq

      【讨论】:

        猜你喜欢
        • 2020-06-03
        • 1970-01-01
        • 2014-02-03
        • 2013-10-16
        • 2012-04-01
        • 1970-01-01
        • 2014-03-23
        • 1970-01-01
        • 2020-06-03
        相关资源
        最近更新 更多