2 回答

TA贡献1841条经验 获得超3个赞
不要使用劫持,因为一旦劫持,HTTP服务器库不会对连接做任何其他事情,所以不能重用。
我改变方式,复制Header和Body,看起来像反向代理(http://golang.org/src/pkg/net/http/httputil/reverseproxy.go),是有效的。
例子:
func copyHeader(dst, src http.Header) {
for k, w := range src {
for _, v := range w {
dst.Add(k, v)
}
}
}
func copyResponse(r *http.Response, w http.ResponseWriter) {
copyHeader(w.Header(), r.Header)
w.WriteHeader(r.StatusCode)
io.Copy(w, r.Body)
}
func handler(w http.ResponseWriter, r *http.Response) {
resp, err := http.Get("http://www.example.com")
if err != nil {
// handle error
}
copyResponse(resp, w)
}
- 2 回答
- 0 关注
- 198 浏览
添加回答
举报