我正在构建一个简单的缓存代理,它拦截 HTTP 请求,抓取 response.Body 中的内容,然后将其写回客户端。问题是,一旦我从 response.Body 读取,写回客户端的内容包含一个空的正文(其他所有内容,如标题,都按预期写入)。
这是当前的代码:
func requestHandler(w http.ResponseWriter, r *http.Request) {
client := &http.Client{}
r.RequestURI = ""
response, err := client.Do(r)
defer response.Body.Close()
if err != nil {
log.Fatal(err)
}
content, _ := ioutil.ReadAll(response.Body)
cachePage(response.Request.URL.String(), content)
response.Write(w)
}
如果我删除content, _和cachePage线,它工作正常。包含行后,请求返回和空正文。任何想法,我怎么能得到公正的Body的http.Response,仍然完整地写出的响应http.ResponseWriter?
当年话下
繁华开满天机
相关分类