clientt := &http.Client{ Timeout: 30 * time.Second,}var tr = &http2.Transport{}clientt.Transport = tr我創建一個客戶端并發送 http/2 請求。使用 http2 傳輸,但在 DumpRequest 我看到 GET / HTTP/1.1 主機:www.xxxxq23.com在響應轉儲中,我看到 HTTP/2.0為什么請求使用 HTTP/1.1 ?如何更改為 HTTP/2.0
1 回答

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
HTTP/2 是二進制的,而不是文本的,并且以二進制形式轉儲將是不可讀且無用的。這是有意設計的,并且有據可查:
DumpRequest 在其 HTTP/1.x 線路表示中返回給定的請求。它只能由服務器用于調試客戶端請求。返回的表示只是一個近似值;初始請求的一些細節在解析為 http.Request 時會丟失。特別是,標頭字段名稱的順序和大小寫丟失。多值標頭中的值順序保持不變。HTTP/2 請求以 HTTP/1.x 形式轉儲,而不是其原始二進制表示形式。
如果 body 為 true,則 DumpRequest 也會返回正文。為此,它消耗 req.Body,然后用產生相同字節的新 io.ReadCloser 替換它。如果 DumpRequest 返回錯誤,則 req 的狀態未定義。
您可以在此處查看實施詳細信息
- 1 回答
- 0 關注
- 210 瀏覽
添加回答
舉報
0/150
提交
取消