在 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中文网其他相关文章!