首頁 >後端開發 >Golang >如何在 Go 的 `http.Client` 中取得重新導向後的最終 URL?

如何在 Go 的 `http.Client` 中取得重新導向後的最終 URL?

Susan Sarandon
Susan Sarandon原創
2024-11-16 18:07:02321瀏覽

How to Get the Final URL After Redirects in Go's `http.Client`?

在Http.Go 中提取重定向後的最終URL

在使用http.NewRequest 發出HTTP 請求時,您可能會遇到需要在任何重定向後從最終URL 提取查詢字串。 Response 物件本身並不會提供對最終 URL 的存取。

要在重定向後檢索 URL:

  1. 在 CheckRedirect 回呼中建立匿名函數。
  2. 在匿名函式中,將 lastUrlQuery 變數設定為重定向請求的 RequestURI()。
  3. 傳回 nil 以允許重定向。

以下是演示此方法的程式碼片段:

req, err = http.NewRequest("GET", URL, nil)
cl := http.Client{}
var lastUrlQuery string
cl.CheckRedirect = func(req *http.Request, via []*http.Request) error {
    if len(via) > 10 {
        return errors.New("too many redirects")
    }
    lastUrlQuery = req.URL.RequestURI()
    return nil
}
resp, err := cl.Do(req)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("last url query is %v", lastUrlQuery)

透過使用此技術,您可以在所有重定向發生後捕獲最終URL,從而允許您從最終目的地存取查詢字串和其他資訊。

以上是如何在 Go 的 `http.Client` 中取得重新導向後的最終 URL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn