为什么ASP.NET_SessionId cookie:具有两次相同的属性SameSite = Lax; SameSite = None?

时间:2020-06-30 10:06:49

标签: .net cookies sessionid samesite

我正在使用.net 4.5.2框架,并添加了以下代码以为ASP.NET_SessionId cookie分配SameSite = None。

<rewrite>
      <outboundRules>
        <rule name="AddSameSiteCookieFlag">
          <match serverVariable="RESPONSE_Set-Cookie" pattern="^(.*)(ASP.NET_SessionId)(=.*)$" />
          <action type="Rewrite" value="{R:0};SameSite=None;" />
        </rule>
      </outboundRules>
    </rewrite>

响应标题: 设置Cookie:ASP.NET_SessionId = XXXXXXXXXXXXX;路径= /; HttpOnly; SameSite = Lax; SameSite = None;

1 个答案:

答案 0 :(得分:0)

似乎您只是将SameSite=None附加到Set-Cookie标头。这不是您想要的。您代码中的某些内容已经在Cookie上设置了SameSite=Lax

删除此内容并测试您的应用程序。除非您的站点始终在跨站点上下文(例如,独立站点中的iframe)中运行,否则不太可能需要SameSite=None作为会话cookie。

如果您确实需要SameSite=None,则可以:

  • 在代码中找到将其设置为Lax的位置并将其更改为None
  • 在代码中找到要设置的位置并将其删除,然后使用上述规则附加SameSite=None

注意:如果您确实需要SameSite=None,则还必须设置Secure

有关详细信息,请参见:https://web.dev/samesite-cookie-recipes/