ホームページ > バックエンド開発 > Golang > Go HTTP POST リクエストの Cookie を効果的に管理するにはどうすればよいですか?

Go HTTP POST リクエストの Cookie を効果的に管理するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-22 22:43:13
オリジナル
378 人が閲覧しました

How Can I Effectively Manage Cookies in Go HTTP POST Requests?

Go HTTP Post と Cookie の使用: 総合ガイド

Go では、セッションを維持し、保護されたリソースにアクセスするために Cookie の管理が不可欠です。 HTTP POST 操作を実行する場合、後続のリクエストのために Cookie を保存することが重要です。

提供されたコード スニペットは、Web サイトにログインし、Cookie を保存し、それらを使用して請求書を表示しようとします。潜在的な改善策は、Go 1.1 で導入された cookiejar パッケージを使用することです。

Cookie 管理に 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

フォームの投稿、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 サイトの他の関連記事を参照してください。

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