亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

重定向初始請求時如何在杜松子酒中記錄響應主體

重定向初始請求時如何在杜松子酒中記錄響應主體

Go
牛魔王的故事 2023-04-04 14:50:51
我正在嘗試記錄已重定向的請求的響應正文。func main() {  r := gin.Default()  eanAPI := api.NewEanAPI()  v1 := r.Group("/v1")  v1.POST("/*action", eanAPI.Redirect, middleware.SaveRequest())      port := os.Getenv("PORT")  if len(port) == 0 {    port = "8000"  }  r.Run(":" + port)}func (api *eanAPI) Redirect(ctx *gin.Context) {  forwardToHost := "https://jsonplaceholder.typicode.com"  url := ctx.Request.URL.String()  ctx.Redirect(http.StatusTemporaryRedirect, forwardToHost)}type bodyLogWriter struct {  gin.ResponseWriter  body *bytes.Buffer}func (w bodyLogWriter) Write(b []byte) (int, error) {  w.body.Write(b)  return w.ResponseWriter.Write(b)}func SaveRequest() gin.HandlerFunc {  return func(c *gin.Context) {    c.Next()    blw := &bodyLogWriter{body: bytes.NewBufferString(""), ResponseWriter: c.Writer}    c.Writer = blw    c.Next()    statusCode := c.Writer.Status()    fmt.Println("status: ", statusCode)    if statusCode <= 400 {      //ok this is an request with error, let's make a record for it      // now print body (or log in your preferred way)      fmt.Println("Response body: " + blw.body.String())    } }不幸的是,身體的反應總是空洞的。也許是重定向或中間件擾亂了我的身體反應當我嘗試郵遞員時,我可以看到身體反應來了!您可以在https://jsonplaceholder.typicode.com/posts上通過 POST 嘗試。它應該在正文響應中返回一個帶有 id 的有效負載我在這里做錯了什么?提前致謝
查看完整描述

1 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

您在瀏覽器/郵遞員中看到的響應正文來自您被重定向到的頁面。執行實際重定向的頁面可能沒有響應主體,只有狀態和Location標頭。這是重定向的預期行為。如果您想嘗試捕獲要重定向到的頁面的主體,您實際上不能為此使用重定向(最終請求中不涉及重定向處理程序);您必須完全代理請求而不是重定向它。代理與重定向有很大不同,因此請確保這確實是您所追求的行為。



查看完整回答
反對 回復 2023-04-04
  • 1 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號