首頁  >  文章  >  後端開發  >  如何使用 Go 的 http.NewRequest 取得重定向後的最終 URL?

如何使用 Go 的 http.NewRequest 取得重定向後的最終 URL?

DDD
DDD原創
2024-11-23 13:14:14528瀏覽

How to Get the Final URL After Redirects Using Go's http.NewRequest?

如何在Go 的http.NewRequest 中取得重定向後的最終URL

使用http.NewRequest 發出HTTP 請求時,可能會遇到情況伺服器重定向請求的位置。要從最終 URL 中提取查詢字串,您需要找到請求最終到達的 URL。

儘管http.Response 物件中缺少明確字段,但有一種方法可以獲取最終URL URL:

使用匿名函數檢查重定向

可以使用匿名函數捕獲並保存最終的重定向URL。以下是範例:

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)

提供給客戶端的 CheckRedirect 函數包裝了預設的檢查重定向機制。它檢查重定向次數並將最終 URL 查詢保存在 lastUrlQuery 變數中。請求執行完成後,您可以透過lastUrlQuery存取最終URL。

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

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