Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die Cookie-basierte Standortverfolgung von cURL in Go emulieren?

Wie kann ich die Cookie-basierte Standortverfolgung von cURL in Go emulieren?

DDD
DDDOriginal
2024-11-05 07:26:02429Durchsuche

How to Emulate cURL's Cookie-Based Location Following in Go?

Emulieren der Cookie-basierten Standortverfolgung von CURL in Go

Problem:

Beim Empfang einer Weiterleitung (HTTP-Code 302) Wie kann ein Go-Client mit einem begleitenden Cookie in der Antwort dem neuen Standort folgen und dabei das empfangene Cookie verwenden?

Antwort:

In Go 1.1 und höher wird die Das Paket net/http/cookiejar bietet hierfür eine Lösung:

<code class="go">import (
    "golang.org/x/net/publicsuffix"
    "io/ioutil"
    "log"
    "net/http"
    "net/http/cookiejar"
)

func main() {
    options := cookiejar.Options{
        PublicSuffixList: publicsuffix.List,
    }
    jar, err := cookiejar.New(&options)
    if err != nil {
        log.Fatal(err)
    }
    client := http.Client{Jar: jar}
    resp, err := client.Get("http://dubbelboer.com/302cookie.php")
    if err != nil {
        log.Fatal(err)
    }
    data, err := ioutil.ReadAll(resp.Body)
    resp.Body.Close()
    if err != nil {
        log.Fatal(err)
    }
    log.Println(string(data))
}</code>

Dieses Code-Snippet emuliert effektiv das Cookie-basierte Standortverfolgungsverhalten von CURL, indem es ein Cookie-Glas (Jar) erstellt, in dem das empfangene Cookie gespeichert wird. Wenn der Client der Weiterleitung folgt, sendet er das gespeicherte Cookie zusammen mit der Anfrage, sodass er mit den entsprechenden Berechtigungen auf den neuen Standort zugreifen kann.

Das obige ist der detaillierte Inhalt vonWie kann ich die Cookie-basierte Standortverfolgung von cURL in Go emulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn