asp.net - 将 cookieSameSite="None" 添加到 SessionState 但是 Cookie 的 SameSite 值仍然是 Lax(默认)
问题描述
在我的 Web 应用程序中,我正在构建一个不同的 Web 应用程序。两个 Web 应用程序的域不同。
我在 iframed Web 应用程序的 web.config 中有以下 SessionState 配置。
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true" sameSite="None"/>
<httpRuntime requestValidationMode="4.7.2" maxQueryStringLength="512" maxUrlLength="512" enableVersionHeader="false" />
<sessionState mode="Custom" cookieless="UseCookies" regenerateExpiredSessionId="true" timeout="245" cookieName="MYCOOKIE" cookieSameSite="None" customProvider="MyCustomSessionProvider">
<providers>
<!-- Custom provider details -->
</providers>
</sessionState>
<compilation batch="false" debug="false" />
<customErrors defaultRedirect="ErrorMessage.aspx" mode="On" />
</system.web>
当我加载页面时,iframed 页面的“MYCOOKIE”没有将 SameSite 设置为无。因为 MYCOOKIE 不会在后续的 HTTP 请求中发送。
我正在使用 chrome (版本 86.0.4240.111 (Official Build) (64-bit) ) 并启用了第三方 cookie。IIS 版本 10.0 在 IIS 中安装的 .NET 框架版本为 4.8.03761
有什么我想念的吗?
解决方案
我之前遇到过同样的问题,在将框架升级到 4.7.2 后它无法正常工作。
修复: -- 所有 Windows 安装都必须是最新的,因为 SameSite="None" 带有一个特定的 Windows 更新。
看看: https: //support.microsoft.com/en-us/help/4533011/kb4533011