URLs ohne Weiterleitungen in Go abfragen
Beim Testen von Weiterleitungsskripten kann es notwendig sein, eine URL abzufragen, ohne die Weiterleitung auszulösen. Dies ist besonders nützlich für die Protokollierung von Weiterleitungs-URLs oder Fehlern. Es gibt zwei Ansätze, um dies in Go zu erreichen.
Verwendung des Standardtransports
Die erste Methode beinhaltet die Verwendung des http.DefaultTransport-Objekts, das eine bessere Kontrolle über das ermöglicht Bearbeitungsprozess der Anfrage. Durch die Nutzung der RoundTrip-Funktion ist es möglich, die HTTP-Anfrage auszuführen, ohne irgendwelchen Weiterleitungen zu folgen.
req, err := http.NewRequest("GET", "http://example.com/redirectToAppStore", nil) // ... resp, err := http.DefaultTransport.RoundTrip(req)
Verwendung des CheckRedirect-Feldes
Alternativ nutzt die zweite Methode das CheckRedirect-Feld eines http.Client. Indem Sie dieses Feld auf func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse } setzen, wird die Umleitungsverarbeitung für nachfolgende Anforderungen, die über den Client ausgeführt werden, effektiv deaktiviert.
client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, } resp, err := client.Get("http://example.com/redirectToAppStore")
Leistungsüberlegungen
Im Zusammenhang mit dem Benchmarking ist es wichtig zu beachten, dass die erste Lösung (http.DefaultTransport.RoundTrip) weist Leistungsprobleme auf, wenn zahlreiche Anfragen gleichzeitig gestellt werden. Dies liegt an der Möglichkeit der Wiederverwendung von Verbindungen innerhalb des Transports.
Für Szenarien, in denen einzelne Anfragen separate Verbindungen erfordern, wird empfohlen, die zweite Lösung (CheckRedirect-Feld) zu verwenden und für jede Anfrage einen neuen Client zu erstellen. Dadurch wird sichergestellt, dass Verbindungen nach jeder Abfrage geschlossen und nicht wiederverwendet werden.
Das obige ist der detaillierte Inhalt vonWie frage ich URLs ohne Weiterleitungen in Go ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!