在Windows 10中的HTTP.SYS和IIS中禁用HTTP / 2 / SPDY [英] Disabling HTTP/2 / SPDY in HTTP.SYS and IIS in Windows 10
问题描述
在Windows 10上进行测试时,我们看到许多浏览器不兼容,这是我以前在Windows版本中没有见过的。有些浏览器可以使用,但其他浏览器会报告ERR_SPDY_PROTOCOL_ERROR。我对这个问题的快速搜索显示我并不孤单。
When testing on Windows 10 we were seeing lots of browser incompatibilities that I hadn't seen before with earlier Windows versions. Some browsers would work, but others would report ERR_SPDY_PROTOCOL_ERROR. My quick search for this problem showed I was not alone.
我的应用程序使用WWSAPI和HTTP.SYS与HTTPS(TLS)。有没有人知道如何在Windows 10上的WWSAPI(使用HTTP.SYS)中禁用SPDY / HTTP / 2?
My app uses WWSAPI and HTTP.SYS with HTTPS (TLS). Does anyone know how to disable SPDY / HTTP/2 in WWSAPI (which is using HTTP.SYS) on Windows 10?
我也很想得到一个完整的HTTP.SYS的最新Windows 10注册表设置列表。
I'd also love to get a full up-to-date Windows 10 list of registry settings for HTTP.SYS.
请参阅下面的答案。希望这也有助于其他人。
See below for my answer to this. Hope this helps others too.
标记
推荐答案
编辑:禁用HTTP / 2将显着降低您的网站速度,这不是一个永久的解决方案。问题原因是我们的webapp向服务器发送了错误的身份验证标头。
disabling HTTP/2 will significantly slow down the speed of your website, this is not a permanent solution. The problem turned out to be caused by our webapp sending a wrong authentication header to the server.
要仍然禁用HTTP / 2,请参阅下文。
To still disable HTTP/2, see below.
(OP提供了一个有用的答案,但在问题中。我提出了答案):
(OP gave a helpful answer, but in the question. I moved the answer):
I通过在注册表中配置Windows 10 HTTP.SYS
来禁用HTTP / 2,可以解决我的HTTP / 2问题。鉴于我在任何地方都没有找到信息
,我想我也会在这里分享我对这个问题的解决方案。我想b $ b想通过WWSAPI找到一种方法。
I did work around my HTTP/2 problem by configuring Windows 10 HTTP.SYS in the registry to disable HTTP/2. Given that I didn't find info anywhere, I thought I'd share my solution to that problem here too. I would like to find a way of doing this through WWSAPI though.
如果我在客户端浏览器中关闭了SPDY支持,它会起作用但是
我想在服务器端关闭它(Windows 10上的HTTP.SYS)
,这样它就不会协商HTTP / 2,而是会使用更旧的
兼容HTTP(S)。
If I turned off SPDY support in the client browser, it would work but I wanted to turn this off at the server side (HTTP.SYS on Windows 10) so that it wouldn't negotiate HTTP/2 but would use the older more compatible HTTP(S).
在HTTP.SYS中发现了两个新的注册表设置:
Discovered two new registry settings for HTTP.SYS in:
HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \HTTP \Parameters
-
EnableHttp2Tls
REG_DWORD
0
-
EnableHttp2Cleartext
REG_DWORD
0
EnableHttp2Tls
REG_DWORD
0
EnableHttp2Cleartext
REG_DWORD
0
在Windows 10中添加这些值并将它们都设置为0会导致
HTTP / 2 / SPDY无法协商,而且我的ERR_SPDY_PROTOCOL_ERROR
问题消失了,无需更改浏览器配置。
我不是说Windows 10 HTTP / 2有什么问题,某些浏览器可能会出现
问题。
Adding these values and setting both to 0 in Windows 10 resulted in HTTP/2 / SPDY not being negotiated and my ERR_SPDY_PROTOCOL_ERROR problems went away without requiring browser configuration changes. I'm not suggesting there is anything wrong with Windows 10 HTTP/2, the problems may be with certain browsers.
这可能有效对于IIS也是如此,但我没有使用它,所以我没有尝试过
,无论如何可能有更好的方法在IIS中执行此操作。
This may work for IIS too, but I don't use that so I haven't tried and in any case there may be a better way to do this in IIS.
希望这也有助于其他人。
Hope this helps others too.
我可以确认这有助于IIS也是,但我必须重启我的电脑。
I can confirm this helps for IIS too, but I had to restart my computer.
这篇关于在Windows 10中的HTTP.SYS和IIS中禁用HTTP / 2 / SPDY的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!