diff --git a/internal/nodes/http_request_reverse_proxy.go b/internal/nodes/http_request_reverse_proxy.go index 7984cd9..393e78d 100644 --- a/internal/nodes/http_request_reverse_proxy.go +++ b/internal/nodes/http_request_reverse_proxy.go @@ -328,7 +328,12 @@ func (this *HTTPRequest) doReverseProxy() { // 是否有内容 if resp.ContentLength == 0 && len(resp.TransferEncoding) == 0 { + // 即使内容为0,也需要读取一次,以便于触发相关事件 + var buf = utils.BytePool4k.Get() + _, _ = io.CopyBuffer(this.writer, resp.Body, buf) + utils.BytePool4k.Put(buf) _ = resp.Body.Close() + this.writer.SetOk() return } diff --git a/internal/nodes/http_writer.go b/internal/nodes/http_writer.go index a7d3bb1..1d0b72d 100644 --- a/internal/nodes/http_writer.go +++ b/internal/nodes/http_writer.go @@ -836,7 +836,7 @@ func (this *HTTPWriter) HeaderData() []byte { return nil } - resp := &http.Response{} + var resp = &http.Response{} resp.Header = this.Header() if this.statusCode == 0 { this.statusCode = http.StatusOK diff --git a/internal/utils/readers/reader_closer_tee.go b/internal/utils/readers/reader_closer_tee.go index 87e529c..4fa4af5 100644 --- a/internal/utils/readers/reader_closer_tee.go +++ b/internal/utils/readers/reader_closer_tee.go @@ -2,7 +2,9 @@ package readers -import "io" +import ( + "io" +) type TeeReaderCloser struct { r io.Reader