Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich meinen Go-Client dazu bringen, HTTP-Weiterleitungen zu folgen und dabei Cookies beizubehalten, ähnlich wie bei cURL?

Wie kann ich meinen Go-Client dazu bringen, HTTP-Weiterleitungen zu folgen und dabei Cookies beizubehalten, ähnlich wie bei cURL?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-05 21:24:02221Durchsuche

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

Go: Umgang mit Cookie-gestützten Weiterleitungen

Wenn eine HTTP-Anfrage eine 302-Weiterleitung mit einem begleitenden Cookie auslöst, können Sie Schwierigkeiten haben, sicherzustellen, dass Ihr Go-Client dem neuen folgt Standort unter Beibehaltung des Cookies. In diesem Artikel wird eine Lösung für diese Herausforderung untersucht, indem er sich vom beliebten Befehlszeilentool cURL inspirieren lässt.

Problemstellung

Wie können Sie in Go Ihren Client so konfigurieren, dass er HTTP-Weiterleitungen folgt Tragen Sie die empfangenen Cookies, ähnlich den cURL-Einstellungen?

Lösung

Führen Sie das Go-Modul net/http/cookiejar ein Ihr Projekt. Dieses Paket bietet effektive Funktionen zur Cookie-Verarbeitung. Hier ist ein Beispiel, das seine Verwendung demonstriert:

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))
}

Diese Lösung emuliert die Funktionalität von cURL, indem sie CookieJar verwendet, um Cookies zwischen Anfragen zu speichern und zu übertragen. Wenn der Client auf eine 302-Umleitung mit einem Cookie stößt, folgt er automatisch dem neuen Standort und behält dabei die Cookie-basierte Sitzung bei.

Das obige ist der detaillierte Inhalt vonWie kann ich meinen Go-Client dazu bringen, HTTP-Weiterleitungen zu folgen und dabei Cookies beizubehalten, ähnlich wie bei cURL?. 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