Heim >Backend-Entwicklung >Golang >Wie kann ich in Go eine Standardauthentifizierung durchführen, ohne Weiterleitungen zu verarbeiten?

Wie kann ich in Go eine Standardauthentifizierung durchführen, ohne Weiterleitungen zu verarbeiten?

Susan Sarandon
Susan SarandonOriginal
2024-12-26 08:25:08426Durchsuche

How Can I Perform Basic Authentication in Go Without Handling Redirects?

Wie kann ich eine Standardauthentifizierung ohne Umleitung in Go anfordern, ohne Fehlerbehandlung zu verwenden?

Bei der Interaktion mit einer REST-API, die 302 Weiterleitungen zurückgibt, Ohne automatische Übertragung kann es schwierig sein, den HTTP-Location-Header zu erhalten Umleitung.

Lösung:

Erwägen Sie als Alternative zur Fehlerbehandlung die Verwendung der folgenden CheckRedirect-Funktion für Ihren HTTP-Client:

func noRedirect(req *http.Request, via []*http.Request) error {
    return http.ErrUseLastResponse
}

Dies Durch eine einfache Änderung wird das HTTP-Paket angewiesen, Weiterleitungen nicht zu folgen. Stattdessen wird die zuletzt empfangene Antwort mit einem nicht geschlossenen Textkörper und ohne Fehler zurückgegeben.

Zur Veranschaulichung hier eine aktualisierte Version des bereitgestellten Codes:

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

var BASE_URL = "https://api.example.com/v1"
var STORMPATH_API_KEY_ID = "xxx"
var STORMPATH_API_KEY_SECRET = "xxx"

func main() {

    client := &http.Client{
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
            return http.ErrUseLastResponse
        },
    }
    req, err := http.NewRequest("GET", BASE_URL+"/tenants/current", nil)
    req.SetBasicAuth(STORMPATH_API_KEY_ID, STORMPATH_API_KEY_SECRET)

    resp, err := client.Do(req)

    // If we get here, it means one of two things: either this http request
    // actually failed, or we got an http redirect response, and should process it.
    if err != nil {
        if resp.StatusCode == 302 {
            fmt.Println("got redirect")
        } else {
            panic("HTTP request failed.")
        }
    }
    defer resp.Body.Close()
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))

}

Das obige ist der detaillierte Inhalt vonWie kann ich in Go eine Standardauthentifizierung durchführen, ohne Weiterleitungen zu verarbeiten?. 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