13

在 Windows 10 上进行测试时,我们看到了许多我以前从未见过的与早期 Windows 版本的浏览器不兼容问题。一些浏览器可以工作,但其他浏览器会报告 ERR_SPDY_PROTOCOL_ERROR。我对这个问题的快速搜索表明我并不孤单。

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

我也很想获得完整的最新 Windows 10 HTTP.SYS 注册表设置列表。

请参阅下文了解我对此的回答。希望这对其他人也有帮助。

标记

4

1 回答 1

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 也有帮助,但我必须重新启动计算机

于 2015-08-12T21:21:05.853 回答