[英]How to Forcefully Redirect HTTP 400 Error in Windows Server HTTP.SYS or IIS levels
[英]Disabling HTTP/2 / SPDY in HTTP.SYS and IIS in 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 注冊表設置列表。
我對此的回答見下文。 希望這對其他人也有幫助。
標記
編輯:禁用 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 也有幫助,但我必須重新啟動計算機。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.