![Azure DevOps Server 2020 和 http/2](https://rvso.com/image/768912/Azure%20DevOps%20Server%202020%20%E5%92%8C%20http%2F2.png)
我已經設定了https在我們的 Azure DevOps Server 2020.0.1 上,並希望 IIS 透過 http/2 為網站提供服務。使用基於 Chromium 的瀏覽器(Chrome、Edge)瀏覽網站時,所有內容均透過 http/1.1 提供。使用 Firefox 瀏覽時,網站的靜態內容透過 http/2 提供,而 api 產生的內容透過 http/1.1 提供。
我希望所有提到的瀏覽器中的所有內容都透過 http/2 提供。那可能嗎?
作業系統是Windows Server 2016。
答案1
並非所有 IIS 功能都啟用了 HTTP/2,因此有時您的瀏覽器只能透過 HTTP 1.1 連線。 Microsoft 將這些場景記錄在這,
什麼時候不支援 HTTP/2?
在少數情況下,HTTP/2 不能與其他功能結合使用。在這些情況下,Windows 將回退到 HTTP/1.1 並繼續交易。這可能涉及在握手期間協商 HTTP/1.1,或向客戶端發送錯誤代碼,指示其透過 HTTP/1.1 連線重試。
- HTTP/2 不支援 Windows 驗證 (NTLM/Kerberos/Negotiate)。在這種情況下,IIS 將回退到 HTTP/1.1。
- 明文 - 如上所述,IIS 目前僅支援基於 TLS 的 HTTP/2。同樣,IIS 將回退到 HTTP/1.1。
- 頻寬限制 - IIS 具有限制頻寬的功能(在 Inetmgr 中,選擇站點,「操作」窗格的「配置」下的「限制」)。這適用於 HTTP/1.1,但不適用於 HTTP/2(將繼續進行,不會出現錯誤或頻寬限制)。
答案2
這是我在「為什麼 chrome 使用 http/1.1 任務」中發現的。 chromium 回退到 http/1.1 似乎是一個已知的錯誤。
https://bugs.chromium.org/p/chromium/issues/detail?id=832586