當HTTP 請求觸發附帶cookie 的302 重定向時,您可能會面臨確保Go 用戶端遵循新規則的困難位置,同時保留cookie。本文借鑒流行的命令列工具 cURL 的靈感,探討了這項挑戰的解決方案。
如何在 Go 中將客戶端配置為遵循 HTTP 重定向,同時攜帶接收到的cookie,類似於cURL的設定?
在專案中引入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 的會話。
以上是如何讓我的 Go 用戶端遵循 HTTP 重定向,同時保留 cookie,類似 cURL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!