在Windows 10中的HTTP.SYS和IIS中禁用HTTP/2/SPDY

Mar*_*B_V 13 iis wwsapi http.sys http2 windows-10

在Windows 10上进行测试时,我们看到许多浏览器不兼容,这是我以前在Windows版本中没有见到的.有些浏览器可以使用,但其他浏览器会报告ERR_SPDY_PROTOCOL_ERROR.我对这个问题的快速搜索表明我并不孤单.

我的应用程序使用WWSAPI和HTTP.SYS与HTTPS(TLS).有谁知道如何在Windows 10上的WWSAPI(使用HTTP.SYS)中禁用SPDY/HTTP/2?

我还想获得HTTP.SYS的最新Windows 10注册表设置列表.

请参阅下面的我对此的回答.希望这也有助于其他人.

标记

Jan*_*m B 21

编辑:禁用HTTP/2将显着降低您的网站的速度,这不是一个永久的解决方案.问题原因是我们的webapp向服务器发送了错误的身份验证标头.

要仍然禁用HTTP/2,请参阅下文.

(OP提供了一个有用的答案,但在问题中.我提出了答案):

通过在注册表中配置Windows 10 HTTP.SYS来禁用HTTP/2,我确实解决了我的HTTP/2问题.鉴于我没有在任何地方找到信息,我想我也会在这里分享我对这个问题的解决方案.我想通过WWSAPI找到一种方法.

如果我在客户端浏览器中关闭SPDY支持,它会工作,但我想在服务器端关闭它(Windows 10上的HTTP.SYS),这样它就不会协商HTTP/2但会使用更旧的更兼容HTTP(S).

在HTTP.SYS中发现了两个新的注册表设置:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

  • EnableHttp2Tls REG_DWORD 0
  • EnableHttp2Cleartext REG_DWORD 0

在Windows 10中添加这些值并将它们都设置为0会导致HTTP/2/SPDY无法协商,并且我的ERR_SPDY_PROTOCOL_ERROR问题消失,而不需要更改浏览器配置.我并不是说Windows 10 HTTP/2有什么问题,可能是某些浏览器存在问题.

这也适用于IIS,但我没有使用它,所以我没有尝试过,无论如何在IIS中可能有更好的方法.

希望这也有助于其他人.

我也可以确认这对IIS有帮助,但我不得不重新启动计算机.

  • 有没有办法只关闭SPDY而不关闭HTTP2?@杰森 (2认同)