升级正向代理
This commit is contained in:
parent
014534d546
commit
71bb052bfa
@ -74,18 +74,53 @@ func Forward(rw http.ResponseWriter, req *http.Request, serverConfig *Server) {
|
||||
rw.Header().Set(k, v)
|
||||
}
|
||||
|
||||
defer res.Body.Close()
|
||||
|
||||
// 重写响应数据
|
||||
if !strings.Contains(strings.ToLower(res.Header.Get("Content-Type")), "application/json") || nil == serverConfig.RewriteResponseData || len(serverConfig.RewriteResponseData) == 0 {
|
||||
io.Copy(rw, res.Body)
|
||||
} else {
|
||||
var responseData []byte
|
||||
var gzipData io.Reader
|
||||
gzipData, err = gzip.NewReader(res.Body)
|
||||
responseData, err = ioutil.ReadAll(gzipData)
|
||||
_, _ = io.Copy(rw, res.Body)
|
||||
return
|
||||
}
|
||||
var (
|
||||
responseData []byte
|
||||
)
|
||||
|
||||
responseData, err = getResponseData(res)
|
||||
fmt.Println(string(responseData), err)
|
||||
|
||||
bytesBuffer := bytes.NewReader([]byte(`{"data":{"permission":true}}`))
|
||||
io.Copy(rw, bytesBuffer)
|
||||
}
|
||||
res.Body.Close()
|
||||
_, _ = io.Copy(rw, bytesBuffer)
|
||||
}
|
||||
|
||||
// getResultCompressType 获取返回结果的压缩方式
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 9:11 下午 2021/9/11
|
||||
func getResultCompressType(res *http.Response) string {
|
||||
return strings.ToLower(res.Header.Get("Content-Encoding"))
|
||||
}
|
||||
|
||||
// getResponseData 解析响应数据
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 9:15 下午 2021/9/11
|
||||
func getResponseData(res *http.Response) ([]byte, error) {
|
||||
var (
|
||||
responseData []byte
|
||||
err error
|
||||
)
|
||||
switch getResultCompressType(res) {
|
||||
case "gzip":
|
||||
var gzipData io.Reader
|
||||
if gzipData, err = gzip.NewReader(res.Body); nil == err {
|
||||
// gzip 处理过的数据
|
||||
responseData, err = ioutil.ReadAll(gzipData)
|
||||
}
|
||||
default:
|
||||
// 默认没有任何压缩
|
||||
responseData, err = io.ReadAll(res.Body)
|
||||
}
|
||||
return responseData, err
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user