我正在嘗試從 Go 發送 HTTP/2 請求,但我不能。
client := &net.Client{}
request, err := net.NewRequest("GET", someUrl, nil)
if err != nil {
return "", err
}
// some headers
// some cookies
client.Transport = &http2.Transport{}
response, err := client.Do(request)
如果我列印轉儲請求
dr, _ := httputil.DumpRequest(request, false)
fmt.Println(string(dr))
然后結果如下
GET /some/url HTTP/1.1
// some headers
// some cookies
為什么?
uj5u.com熱心網友回復:
我正在嘗試從 Go 發送 HTTP/2 請求,但我不能。...
dr, _ := httputil.DumpRequest(request, false) fmt.Println(string(dr))然后結果如下
GET /some/url HTTP/1.1 // some headers // some cookies
DumpRequest 不會列印在線發送的請求,特別不適合檢查是否使用 HTTP/2。該檔案明確規定:
DumpRequest在其 HTTP/1.x 線路表示中回傳給定的請求。它應該只被服務器用來除錯客戶端請求。回傳的表示只是一個近似值;初始請求的一些細節在決議為 http.Request 時丟失。特別是,頭欄位名稱的順序和大小寫丟失了。多值標頭中的值順序保持不變。HTTP/2 請求以 HTTP/1.x 形式轉儲,而不是以原始二進制表示形式轉儲。”
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/362237.html
