HTTP リクエストが Cookie を伴う 302 リダイレクトをトリガーすると、Go クライアントが新しいリダイレクトに確実に従うことが困難になる可能性があります。 Cookie を保持したまま位置情報を取得します。この記事では、人気のあるコマンドライン ツールである cURL からインスピレーションを借りて、この課題の解決策を検討します。
Go では、HTTP リダイレクトに従うようにクライアントを構成するにはどうすればよいですか? cURL の設定と同様に、受信した Cookie を保持しますか?
Go モジュール net/http/cookiejar をプロジェクトに導入します。このパッケージは、効果的な Cookie 処理機能を提供します。その使用法を示す例を次に示します。
package main import ( "golang.org/x/net/publicsuffix" "io/ioutil" "log" "net/http" "net/http/cookiejar" ) func main() { // Create a CookieJar with customizable options. options := cookiejar.Options{ PublicSuffixList: publicsuffix.List, } jar, err := cookiejar.New(&options) if err != nil { log.Fatal(err) } // Instantiate an HTTP Client with the CookieJar attached. client := http.Client{Jar: jar} // Execute an HTTP request that includes a cookie. 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) } // Print the response body, which ideally contains unique information set by the PHP script on the server. log.Println(string(data)) }
このソリューションは、CookieJar を利用してリクエスト間で Cookie を保存および送信することにより、cURL の機能をエミュレートします。クライアントが Cookie による 302 リダイレクトに遭遇すると、Cookie ベースのセッションを維持しながら、自動的に新しい場所をたどります。
以上がcURL と同様に、Cookie を保持しながら Go クライアントが HTTP リダイレクトに従うようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。