因 Cookie 被添加了 SameSite=None 属性导致在非 https 环境下无法为网站正确设置 Cookie 进而导致系统状态异常的问题

这个错误很隐蔽,因为它不会出现在控制台的报错中,只会在 POST 请求响应头的 Set-Cookie 后面有一个黄色感叹号,鼠标放上去才能看到以下提示。

尝试通过 Set-Cookie 标头设置 Cookie 的操作被禁止了,因为此标头具有"SameSite=None"属性但缺少使用"SameSite=None"所需的"Secure"属性。

示例:

但是很奇怪,代码层面并没有添加相关内容,且目前在大多数环境中都没有出现这个问题。

经过询问 ChatGPT 得知,有一个补丁 KB4533013 更改了 .NET Framework 4.7.2 的默认行为,默认添加了该属性。

但看到该补丁是 2019 年 12 月发布的,不知为何最近才暴露问题。

最好的处理是根据情况选择合适的 SameSite 配置,或使用 https 协议提供服务。

还有一种就是还原该行为到之前的状态,在 Web.config 文件中添加以下配置:

<configuration> 
  <appSettings>
    <add key="aspnet:SuppressSameSiteNone" value="true" />
  </appSettings>
 
  <system.web> 
    <authentication> 
      <forms cookieSameSite="None" /> 
    </authentication> 
    <sessionState cookieSameSite="None" /> 
  </system.web> 
</configuration>

参考来源:

https://blog.csdn.net/G_king_/article/details/141753617

https://support.microsoft.com/zh-cn/topic/december-10-2019-kb4533013-cumulative-update-for-net-framework-3-5-and-4-7-2-for-windows-10-version-1809-and-windows-server-2019-80565f26-2594-210a-c45b-ec20ba095154

https://learn.microsoft.com/zh-cn/aspnet/samesite/system-web-samesite#reverting-net-472-behavior

 

posted @ 2025-04-14 15:08  不是豆豆  阅读(289)  评论(0)    收藏  举报
友情链接:迷途