如何在IIS 10上禁用HTTP/2

32

IIS 10声称完全支持HTTP/2。我想知道是否有办法在IIS 10上关闭HTTP/2。

IIS 10声称完全支持HTTP/2。我想知道是否有办法在IIS 10上关闭HTTP/2。


1
为什么你想要将它关闭 - Dai
1
请看我的这个问题(http://serverfault.com/questions/712808/chrome-reports-err-spdy-inadequate-transport-security-connecting-to-local-web-se)的原因,为什么有人希望禁用它。 - NathanAldenSr
1
当我们在开发环境中使用HTTP/2时,我们拥有由自己的根CA颁发的证书,但像Chrome和Firefox这样的浏览器似乎不喜欢它。 - Bart Verkoeijen
2
这里还有另一个原因:由于NTLM采用串行请求/响应握手,它在更并行的http2下会失败。这导致Chrome在第一次请求站点和它故障转移到HTTP1.1并呈现第一页之间出现“无法访问网站”的错误。之后,该站点运行良好(因为它正在运行http1.1),但最初的错误会让用户非常沮丧。 - C.List
1
@airowe 不是的。在我们所有的生产系统上,它仍然被禁用。我们计划在未来某个时候重新审视这个问题,但稳定性对我们来说现在更加重要。如果我们找到了解决方案,我会尝试记得在这里发布。 - Zero3
显示剩余11条评论
2个回答

32

在Windows 10 HTTP.SYS上禁用HTTP/2,请在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters中的Windows 10桌面上设置以下注册表值。

EnableHttp2Tls REG_DWORD 0

EnableHttp2Cleartext REG_DWORD 0

如果出现HTTP问题,则只需要进行第二项设置。第一项是为HTTPS而设。


11
为使更改生效,我不得不重新启动计算机。 - Bart Verkoeijen
5
我不知道为什么,但这似乎在Windows Server 2016 1607 Build 14393.2551上无法正常工作。它似乎在1607 Build 14393.2485上运行得很好。 - Christopher Painter

4
这是一篇旧文,但我想分享一下我的经验。我们从Server 2008转换到2016时,只有在我们的Classic ASP页面上才遇到了这个问题。我发现我将response.buffer设置为true,然后处理响应头等内容,最后发送response.flush。
我发现Chrome仅在第一次调用时会出现此问题,如果我再次发送调用,则可以解决问题 - 因为它会退回到http 1.1。禁用http2可以解决问题,但这不是一个好的解决方案。
我在response.flush之后添加了response.end,问题就消失了。所以说,对于我来说,似乎与未结束响应有关,而在http 1.1中这很好,但在http2中却不行。
也许这可以帮助其他人走得更顺利。

谢谢!你让我的一天变得美好了!我已经将一个SSRS迁移到了一个新的HTTPS服务器上,但在下载报告时出现了问题:https://dev59.com/alcO5IYBdhLWcg3wxEcP有了你的解决方案,现在一切都完美了! - AlvaroV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接