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

Linda Hamilton
リリース: 2024-11-26 02:05:11
オリジナル
922 人が閲覧しました

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

クライアントの指示後に URL を取得する方法

Go の http パッケージでは、文字列をクエリするために複数の http リクエストを行うのが一般的です。ただし、最終 URL からこれらの文字列を抽出することは、特にリダイレクトが発生した場合に困難になる可能性があります。残念ながら、Response オブジェクトにはこの最終 URL に関する情報がありません。

リダイレクト防止オプションが利用可能であるにもかかわらず、この記事ではリクエストが行われた後の URL の取得に焦点を当てています。これを実現するには:

  1. http.NewRequest を使用して新しい http リクエストを作成します。
  2. リクエストを処理する http.Client を設定します。
  3. 匿名関数を使用します。クライアントをセットアップします。匿名関数を使用すると、URL クエリを変数に保存できます。
  4. client.Do を使用してリクエストを実行します。
  5. 保存された URL クエリを取得します。

コード スニペットの例を次に示します。

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

func main() {
    req, err := http.NewRequest("GET", "URL", nil)
    if err != nil {
        log.Fatal(err)
    }
    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\n", lastUrlQuery)
}
ログイン後にコピー

このコードはリクエストをリダイレクトし、最終的な URL クエリを次の場所に保存します。 lastUrlQuery.

以上がGo で HTTP リダイレクト後に最終 URL を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート