在 Go 中,管理 cookie 對於維護會話和存取受保護的資源至關重要。執行 HTTP POST 操作時,為後續請求儲存 cookie 至關重要。
提供的程式碼片段嘗試登入網站、儲存 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中文網其他相關文章!