Wie kann ich nach einer ersten Authentifizierung mit der Basisauthentifizierung nachfolgende HTTP-Anfragen in Go authentifizieren?

Barbara Streisand
Freigeben: 2024-11-14 19:24:02
Original
485 Leute haben es durchsucht

How can I authenticate subsequent HTTP requests in Go after an initial authentication using basic auth?

Authentifizierte HTTP-Client-Anfragen von Go

Bedenken Sie den folgenden Codeausschnitt:

client := &http.Client{}

/* Authenticate */
req, err := http.NewRequest("GET", "http://164.99.113.32/Authenticate", nil)
req.SetBasicAuth("<username>", "<password>")
resp, err := client.Do(req)
if err != nil {
    fmt.Printf("Error : %s", err)
}

/* Get Details */
req.URL, _ = url.Parse("http://164.99.113.32/Details")
resp, err = client.Do(req)
if err != nil {
    fmt.Printf("Error : %s", err)
}
Nach dem Login kopieren

Das Problem hier ist, dass Der zweite HTTP-Aufruf schlägt mit der Fehlermeldung 401 „Zugriff verweigert“ fehl.

Warum passiert das?

Der Grund dafür ist, dass die zweite Anfrage das vorhandene Sitzungscookie nicht enthält erhalten Sie bei der ersten Anfrage. Um dieses Problem zu lösen, müssen wir eine Keksdose erstellen, um Cookies über Anfragen hinweg zu speichern und wiederzuverwenden.

type myjar struct {
    jar map[string] []*http.Cookie
}

func (p* myjar) SetCookies(u *url.URL, cookies []*http.Cookie) {
    fmt.Printf("The URL is : %s\n", u.String())
    fmt.Printf("The cookie being set is : %s\n", cookies)
    p.jar [u.Host] = cookies
}

func (p *myjar) Cookies(u *url.URL) []*http.Cookie {
    fmt.Printf("The URL is : %s\n", u.String())
    fmt.Printf("Cookie being returned is : %s\n", p.jar[u.Host])
    return p.jar[u.Host]
}
Nach dem Login kopieren

In der Hauptfunktion:

    jar := &myjar{}
    jar.jar = make(map[string] []*http.Cookie)
    client.Jar = jar
Nach dem Login kopieren

Mit diesen Änderungen wird die zweite Anfrage Sie verfügen über das erforderliche Cookie, um sich erfolgreich zu authentifizieren und die Details vom Server abzurufen.

Das obige ist der detaillierte Inhalt vonWie kann ich nach einer ersten Authentifizierung mit der Basisauthentifizierung nachfolgende HTTP-Anfragen in Go authentifizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage