Frage:
Wie kann ich die verwendete Quell-IP-Adresse angeben? für eine HTTP-Anfrage in Los?
Antwort:
Obwohl die Standardbibliothek nicht direkt eine Möglichkeit bietet, die Quell-IP-Adresse für HTTP-Anfragen festzulegen, können Sie dies erreichen, indem Sie die des Clients anpassen Transport mit einem benutzerdefinierten Dialer.
Um die Quell-IP-Adresse anzupassen, können Sie eine benutzerdefinierte erstellen Dialer und weisen Sie ihn dem Transport des Kunden zu. Hier ist ein Beispiel:
import ( "net" "time" "golang.org/x/net/http/httpproxy" ) // Create a custom transport with a specified local address transport := &http.Transport{ Proxy: http.ProxyFromEnvironment, DialContext: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, LocalAddr: localAddr, // Set the desired local IP address here DualStack: true, }).DialContext, MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 10 * time.Second, ExpectContinueTimeout: 1 * time.Second, } // Create the client with the customized transport client := &http.Client{ Transport: transport, }
Durch die Einstellung von LocalAddr im Dialer können Sie die Quell-IP-Adresse angeben, die für die HTTP-Anfrage verwendet werden soll.
Einmal Wenn Sie den benutzerdefinierten Client erstellt haben, können Sie ihn verwenden, um HTTP-Anfragen zu stellen:
resp, err := client.Get("http://example.com/") if err != nil { // handle error } defer resp.Body.Close() // ...
Diese Verwendung ähnelt der Erstellung von Anfragen mit dem Standard http.Get, aber es ermöglicht Ihnen, die Quell-IP-Adresse für die Anfrage zu steuern. Denken Sie daran, localAddr durch die gewünschte IP-Adresse zu ersetzen.
Das obige ist der detaillierte Inhalt vonWie lege ich die Quell-IP-Adresse für HTTP-Anfragen in Go fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!