ホームページ  >  記事  >  バックエンド開発  >  Go の CookieJar を使用して、Cookie を保存しながらリダイレクトを追跡するにはどうすればよいですか?

Go の CookieJar を使用して、Cookie を保存しながらリダイレクトを追跡するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-05 18:35:02848ブラウズ

How can Go's CookieJar be used to follow redirects while preserving cookies?

Go の cookiejar を利用して Cookie によるリダイレクトを追跡する

HTTP リクエストの結果が 302 リダイレクトになる場合、後続のリクエストのサーバー。 Go では、これは cookiejar パッケージを通じて実現でき、Cookie を保持しながらリダイレクトに自動的に従う便利な方法を提供します。

このシナリオの目標は、次の設定で CURL の動作をエミュレートすることです。

  • COOKIEFILE = "": ディスクへの Cookie の書き込みを無効にします。
  • AUTOREFERER = 1: Referer ヘッダーを自動的に設定します。
  • FOLLOWLOCATION = 1: リダイレクトを追跡します。

cookiejar を使用した実装

Go 1.1 では、これらのタスクをシームレスに処理するために net/http/cookiejar パッケージを使用できます。その使用法を示すコード サンプルを次に示します。

<code class="go">package main

import (
    "golang.org/x/net/publicsuffix"
    "io/ioutil"
    "log"
    "net/http"
    "net/http/cookiejar"
)

func main() {
    // Configure the cookie jar.
    options := cookiejar.Options{
        PublicSuffixList: publicsuffix.List,
    }
    jar, err := cookiejar.New(&options)
    if err != nil {
        log.Fatal(err)
    }

    // Create an HTTP client with the cookie jar.
    client := http.Client{Jar: jar}

    // Make the request.
    resp, err := client.Get("http://dubbelboer.com/302cookie.php")
    if err != nil {
        log.Fatal(err)
    }

    // Read the response body.
    data, err := ioutil.ReadAll(resp.Body)
    resp.Body.Close()
    if err != nil {
        log.Fatal(err)
    }

    // Log the response.
    log.Println(string(data))
}</code>

この例では、Cookie jar はパブリック サフィックス リストに従うように構成され、ドメインベースの Cookie が適切に処理されるようにします。クライアントは jar を使用して作成され、指定された URL に対して GET リクエストが行われます。応答本文が読み取られてログに記録され、Cookie jar がリダイレクトを効果的に処理し、Cookie を保存していることがわかります。

以上がGo の CookieJar を使用して、Cookie を保存しながらリダイレクトを追跡するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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