ホームページ >バックエンド開発 >Golang >Go で HTTP リダイレクト後の最終 URL を取得する方法

Go で HTTP リダイレクト後の最終 URL を取得する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-25 19:14:11641ブラウズ

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

Http.Go での最終 URL の取得

リダイレクトを含む一連の HTTP リクエストの後に、どのようにして最終 URL を抽出しますか?提供されたコードは http.NewRequest を使用してリクエストを開始しますが、Response オブジェクトには最終 URL のフィールドが含まれていません。

解決策:

1 つの方法は次のとおりです。匿名関数と 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。