首頁 >後端開發 >Golang >如何讓我的 Go 用戶端遵循 HTTP 重定向,同時保留 cookie,類似 cURL?

如何讓我的 Go 用戶端遵循 HTTP 重定向,同時保留 cookie,類似 cURL?

Patricia Arquette
Patricia Arquette原創
2024-11-05 21:24:02302瀏覽

How can I make my Go client follow HTTP redirects while retaining cookies, similar to cURL?

Go:處理Cookie 輔助重定向

當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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn