我有一个 http 请求,我需要检查其正文。但是当我这样做时,请求失败了。我假设这与 Reader 需要重置有关,但是谷歌搜索并go ioutil reset ReadCloser没有发现任何看起来有希望的东西。c是*middleware.Context, c.Req.Request是http.Request, c.Req.Request.Body是io.ReadClosercontents, _ := ioutil.ReadAll(c.Req.Request.Body)log.Info("Request: %s", string(contents))proxy.ServeHTTP(c.RW(), c.Req.Request)具体来说,我得到的错误是 http: proxy error: http: ContentLength=133 with Body length 0
1 回答
手掌心
TA贡献1942条经验 获得超3个赞
您无法重置它,因为您已经从中读取了内容并且流中没有任何内容。
你可以做的是获取你已经拥有的缓冲字节,并用一个新的替换 Body io.ReadCloser
contents, _ := ioutil.ReadAll(c.Req.Request.Body)
log.Info("Request: %s", string(contents))
c.Req.Request.Body = ioutil.NopCloser(bytes.NewReader(contents))
proxy.ServeHTTP(c.RW(), c.Req.Request)
- 1 回答
- 0 关注
- 166 浏览
添加回答
举报
0/150
提交
取消