为何Windows11需用RedirectGet替代FormPost实现IdentityServer4重定向?
为何仅Windows 11需要修改Blazor Server+IdentityServer4的认证配置?
这个问题的核心原因在于Windows 11和Windows 10在HTTP/2协议处理、IIS Express默认配置以及HTTP.sys组件版本上的差异:
IIS Express的HTTP/2默认行为差异
Windows 11搭配Visual Studio 2022使用的IIS Express版本,默认启用了更严格的HTTP/2协议校验逻辑。而Windows 10上的IIS Express对HTTP/2下的客户端表单提交(也就是FormPost跳转方式)兼容性更好,不会触发协议错误。HTTP.sys组件的版本差异
Windows 11搭载了更新版本的HTTP.sys(系统级HTTP协议处理组件),它对HTTP/2的帧处理、连接复用规则进行了更严格的规范。当使用OpenIdConnectRedirectBehavior.FormPost时,Blazor Server的LoginIdp页面会生成一个自动提交的HTML表单,这个客户端侧的提交动作在Windows 11的HTTP/2连接下,会被HTTP.sys判定为不符合协议规范的请求,直接中断连接并抛出err_http2_protocol_error。两种解决方案的适配逻辑
- 禁用HTTP/2:退回到HTTP/1.1协议,避开Windows 11 HTTP.sys对HTTP/2的严格校验,行为和Windows 10环境对齐,自然不会出错。
- 改为
OpenIdConnectRedirectBehavior.RedirectGet:直接通过302重定向跳转,不需要依赖客户端生成表单提交,这种跳转方式完全符合Windows 11的HTTP/2协议处理规则,因此不会触发错误。
内容的提问来源于stack exchange,提问作者Chadley08
相关产品推荐
相关产品推荐

