@@ -116,15 +116,11 @@ func updateBody(rw *http.Response, content []byte) error {
116116 switch encoding {
117117 case "gzip" :
118118 logging .Debug ("使用 GZIP 重新编码数据" )
119- gw := gzip .NewWriter (& compressed )
120- defer gw .Close ()
121- writer = gw
119+ writer = gzip .NewWriter (& compressed )
122120
123121 case "br" :
124122 logging .Debug ("使用 Brotli 重新编码数据" )
125- bw := brotli .NewWriter (& compressed )
126- defer bw .Close ()
127- writer = bw
123+ writer = brotli .NewWriter (& compressed )
128124
129125 case "" : // 无压缩
130126 logging .Debug ("无压缩数据" )
@@ -133,16 +129,21 @@ func updateBody(rw *http.Response, content []byte) error {
133129 default :
134130 logging .Warningf ("不支持的重新编码:%s,将不对数据进行压缩编码" , encoding )
135131 rw .Header .Del ("Content-Encoding" )
132+ writer = & compressed
136133 }
137134
138135 if _ , err := writer .Write (content ); err != nil {
139136 return fmt .Errorf ("compression write error: %w" , err )
140137 }
141138
142- // Brotli 需要显式 Flush
143- if bw , ok := writer .(* brotli.Writer ); ok {
144- if err := bw .Flush (); err != nil {
145- return err
139+ // 显式关闭以确保数据完整写入 buffer
140+ if gw , ok := writer .(* gzip.Writer ); ok {
141+ if err := gw .Close (); err != nil {
142+ return fmt .Errorf ("gzip close error: %w" , err )
143+ }
144+ } else if bw , ok := writer .(* brotli.Writer ); ok {
145+ if err := bw .Close (); err != nil {
146+ return fmt .Errorf ("brotli close error: %w" , err )
146147 }
147148 }
148149
0 commit comments