因 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>
一份耕耘,一份收获,付出就有回报永不遭遇过失败,因我所碰到的都是暂时的挫折