OSS支援HTTP/2已知影響

簡單愛0107發表於2018-10-23

為了OSS 更好的訪問體驗,OSS計劃升級支援HTTP/2。目前發現低版本Go語言應用存在缺陷導致HTTP/2請求處理異常,已知影響面如下(如果您訪問OSS的方式,是使用OSS官方SDK,則無需關心以下內容):

  1. 使用Go語言應用使用HTTPS 訪問OSS服務並且客戶端開啟支援HTTP/2 的,建議將Go版本升級至Go1.8 及以上版本。
    (如果使用了AliyunOSS 官方提供的Go 語言SDK 則無需關心此問題)
  2. 使用Docker Registry(部署為Registry或Mirror)並使用OSS作為映象儲存的使用者(https://hub.docker.com/_/registry/),
    建議將Registry版本升級至2.6.0 及以上版本,升級步驟為: “用新映象啟動容器”。

缺陷原因:HTTP/2 的 :path pseudo header RFC 協議規定是不支援absoluteURI 的,低版本Go語言應用存在缺陷,可能會傳送:path 欄位為absoluteURI 的請求,因此會造成H2 請求發生stream error: protocol error 錯誤,導致請求失敗。
缺陷詳情:詳見 https://github.com/golang/go/issues/16847
修復情況:目前go 語言及使用go 語言的Docker Registry已經在新版本Fix 了這個問題
Go:
Fix: https://github.com/c3mb0/net/commit/98a0f4b48863877e4e357441e80ab56d7269a206
目前在 release-branch.go1.8 已經包含這個修復。
Docker Registry:
在2.6.0之前版本存在問題,在2.6.0及後續版本修復了這個問題。
修復版本:Go1.8 及後續版本,Docker Registry 2.6.0 及後續版本。


相關文章