Abrufen der endgültigen URL in Http.Go
Wie extrahieren Sie die endgültige URL nach einer Reihe von HTTP-Anfragen, einschließlich etwaiger Weiterleitungen? Der bereitgestellte Code verwendet http.NewRequest, um die Anfragen zu initiieren, aber das Response-Objekt enthält kein Feld für die endgültige URL.
Lösung:
Ein Ansatz ist um eine anonyme Funktion und http.Client.CheckRedirect zu nutzen. Durch die Definition einer benutzerdefinierten CheckRedirect-Funktion können Sie die letzte URL-Abfrage vor der Weiterleitung erfassen. Hier ist ein Beispiel:
import ( "fmt" "io" "net/http" ) func main() { req, err := http.NewRequest("GET", "https://example.com", nil) if err != nil { // Handle error } cl := http.Client{} var lastUrlQuery string cl.CheckRedirect = func(req *http.Request, via []*http.Request) error { if len(via) > 10 { return errors.New("too many redirects") } lastUrlQuery = req.URL.RequestURI() return nil } resp, err := cl.Do(req) if err != nil { // Handle error } io.Copy(io.Discard, resp.Body) fmt.Printf("Last URL query: %s\n", lastUrlQuery) }
In diesem Code erfasst lastUrlQuery die URL-Abfrage vor jeder Weiterleitung. Wenn die Weiterleitungskette abgeschlossen ist oder ein Limit erreicht (im Beispiel auf 10 festgelegt), wird die endgültige URL-Abfrage in lastUrlQuery.
gespeichertDas obige ist der detaillierte Inhalt vonWie erhalte ich die endgültige URL nach HTTP-Weiterleitungen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!