首頁 >後端開發 >Golang >Go 中如何取得 HTTP 重新導向後的最終 URL?

Go 中如何取得 HTTP 重新導向後的最終 URL?

Susan Sarandon
Susan Sarandon原創
2024-11-25 19:14:11593瀏覽

How to Get the Final URL After HTTP Redirects in Go?

在 Http.Go 中檢索最終 URL

如何在一系列 HTTP 請求(包括任何重定向)之後提取最終 URL?提供的程式碼使用 http.NewRequest 發起請求,但 Response 物件不包含最終 URL 的欄位。

解:

一個方法是利用匿名函式和http.Client.CheckRedirect。透過定義自訂 CheckRedirect 函數,您可以擷取重定向先前的最後一個 URL 查詢。以下是一個範例:

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    req, err := http.NewRequest("GET", "https://example.com", nil)
    if err != nil {
        // Handle error
    }

    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 {
        // Handle error
    }
    io.Copy(io.Discard, resp.Body)
    fmt.Printf("Last URL query: %s\n", lastUrlQuery)
}

在此程式碼中,lastUrlQuery 在每次重定向之前捕獲 URL 查詢。當重定向鏈完成或達到限制(在範例中設定為 10)時,最終的 URL 查詢將儲存在 lastUrlQuery 中。

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

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