Golang:如何 terminate/abort/cancel 没有响应的入站 http 请求?
Golang: How to terminate/abort/cancel inbound http request without response?
从服务器端我需要 terminate/abort 请求而不像 nginx's 444 那样对客户端有任何响应。
从客户端看,连接应该被对等方重置。
我花了几个小时才偶然发现 http.Hijacker
允许从 http.ResponseWriter
:
访问网络连接
h := func(w http.ResponseWriter, r *http.Request) {
if wr, ok := w.(http.Hijacker); ok {
conn, _, err := wr.Hijack()
if err != nil {
fmt.Fprint(w, err)
}
conn.Close()
}
}
在某些情况下,终止连接可能有助于节省 CPU 时间和出站流量。
从服务器端我需要 terminate/abort 请求而不像 nginx's 444 那样对客户端有任何响应。
从客户端看,连接应该被对等方重置。
我花了几个小时才偶然发现 http.Hijacker
允许从 http.ResponseWriter
:
h := func(w http.ResponseWriter, r *http.Request) {
if wr, ok := w.(http.Hijacker); ok {
conn, _, err := wr.Hijack()
if err != nil {
fmt.Fprint(w, err)
}
conn.Close()
}
}
在某些情况下,终止连接可能有助于节省 CPU 时间和出站流量。