如下所示,简单做个代理
func main() {
remote, _ := url.Parse("http://www.xxxx.com")
proxy := httputil.NewSingleHostReverseProxy(remote)
log.Fatal( http.ListenAndServe(":9999", proxy))
}
我想把代理后返回的一些内容替换掉.但是怎么都成功不了. 下面这样怎么没反映? go 的 http 太"精髓"了.才学几天,摸不着门道. 哪位同学能指个路吗?谢谢.
func (t *transport) RoundTrip(req *http.Request) (res *http.Response, err error) {
res, err = t.RoundTripper.RoundTrip(req)
b, err := ioutil.ReadAll(res.Body)
if err != nil {
return nil, err
}
defer res.Body.Close()
b = bytes.Replace(b, []byte("Keywords"), []byte("xxxxxxxx"), -1)
body := ioutil.NopCloser(bytes.NewReader(b))
res.Body = body
res.ContentLength = int64(len(b))
res.Header.Set("Content-Length", strconv.Itoa(len(b)))
return res, nil
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.