【发布时间】:2020-02-10 03:15:44
【问题描述】:
我想在每次请求后关闭 http2 客户端连接(例如在 http1.1 中禁用 keep-alive 连接)。我尝试添加标题Connection: close 但这给出了
http2:客户端连接不可用错误。
我尝试使用 request.Close = true 以及在文档中指定,但仍然出现错误。
以下是我正在使用的代码 sn-p:
func main() {
enableCompression := false
transport2 := &http2.Transport{
DisableCompression: !enableCompression,
AllowHTTP: true,
DialTLS: func(network, addr string, cfg *tls.Config) (net.Conn, error) {
return net.Dial(network, addr)
},
}
// Create http client
client := http.Client{
Transport: transport2,
Timeout: time.Duration(1 * time.Second),
}
var err error
var request *http.Request
if request, err = createRequest(); err == nil {
request.Close = true
var response *http.Response
if response, err = client.Do(request); err == nil {
fmt.Println(response)
} else {
fmt.Println("error: ", err)
}
}
}
func createRequest() (request *http.Request, err error) {
if request, err = http.NewRequest("GET", "http://0.0.0.0:1010/hello/sayHello", nil); err == nil {
fmt.Println(request)
}
return
}
这给出了错误: http2: 客户端连接不可用(等待标头时超出 Client.Timeout)
我错过了什么?
【问题讨论】:
-
我正在考虑将此问题重用于通用“golang:我想控制 HTTP/2 连接”。