1 回答

TA貢獻1829條經驗 獲得超7個贊
這似乎做到了:
package main
import (
"crypto/tls"
"net/http"
)
func main() {
client := &http.Client{
Transport: &http.Transport{
TLSNextProto: map[string]func(string, *tls.Conn)http.RoundTripper{},
},
}
req, e := http.NewRequest("HEAD", "https://stackoverflow.com", nil)
if e != nil {
panic(e)
}
res, e := client.Do(req)
if e != nil {
panic(e)
}
println(res.Proto == "HTTP/1.1")
}
必須禁用 HTTP/2 的程序可以通過將(對于客戶端)或(對于服務器)設置為非 nil 的空映射來執行此操作。Transport.TLSNextProtoServer.TLSNextProto
https://golang.org/pkg/net/http#pkg-overview
誠然,這是非常尷尬的語法,所以你可能更喜歡這樣的東西:
package main
import (
"net/http"
"os"
)
func main() {
os.Setenv("GODEBUG", "http2client=0")
req, e := http.NewRequest("HEAD", "https://stackoverflow.com", nil)
if e != nil {
panic(e)
}
res, e := new(http.Client).Do(req)
if e != nil {
panic(e)
}
println(res.Proto == "HTTP/1.1")
}
- 1 回答
- 0 關注
- 689 瀏覽
添加回答
舉報