Go では、セッションを維持し、保護されたリソースにアクセスするために Cookie の管理が不可欠です。 HTTP POST 操作を実行する場合、後続のリクエストのために Cookie を保存することが重要です。
提供されたコード スニペットは、Web サイトにログインし、Cookie を保存し、それらを使用して請求書を表示しようとします。潜在的な改善策は、Go 1.1 で導入された cookiejar パッケージを使用することです。
cookiejar パッケージは、クライアント リクエストの Cookie を管理する便利な方法を提供します。これをコードに統合する方法は次のとおりです。
import ( "net/http" "net/http/cookiejar" ) jar, err := cookiejar.New(nil) if err != nil { // Error handling } client := &http.Client{ Jar: jar, }
jar を http.Client の一部として使用すると、Cookie が自動的に保存され、後続のリクエストで送信されます。
フォームの投稿、Cookie の保存、およびフォームの表示のための更新されたコードbill:
func Login(user, password string, client *http.Client) string { postUrl := "http://www.pge.com/eum/login" // Set up Login values := make(url.Values) values.Set("user", user) values.Set("password", password) // Submit form resp, err := client.PostForm(postUrl, values) if err != nil { log.Fatal(err) } defer resp.Body.Close() return "Hello" } func ViewBill(url string, client *http.Client) string { // Make the request using the client with cookies resp, err := client.Get(url) if err != nil { log.Fatal(err) } defer resp.Body.Close() return resp.Body }
この更新バージョンでは、クライアント オブジェクトがパラメータとして Login 関数と ViewBill 関数に渡されます。これにより、両方の操作に同じクライアントが使用され、Cookie が保持されます。
以上がGo HTTP POST リクエストの Cookie を効果的に管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。