Heim >Backend-Entwicklung >Golang >Wie kann ich nach einer ersten Authentifizierung mit der Basisauthentifizierung nachfolgende HTTP-Anfragen in Go authentifizieren?

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

Barbara Streisand
Barbara StreisandOriginal
2024-11-14 19:24:02527Durchsuche

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

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

In der Hauptfunktion:

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

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!

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