Maison >développement back-end >Golang >Comment spécifier l'adresse IP source pour les requêtes HTTP dans Go ?
Question :
Comment puis-je spécifier l'adresse IP source utilisée pour une requête HTTP dans Allez-y ?
Réponse :
Bien que la bibliothèque standard ne fournisse pas directement un moyen de définir l'adresse IP source pour les requêtes HTTP, vous pouvez y parvenir en personnalisant l'adresse IP du client. transport à l'aide d'un numéroteur personnalisé.
Pour personnaliser l'adresse IP source, vous pouvez créer un numéroteur personnalisé composeur et l'attribuer au transport du client. Voici un exemple :
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, }
En définissant LocalAddr dans le numéroteur, vous pouvez spécifier l'adresse IP source à utiliser pour la requête HTTP.
Une fois vous avez créé le client personnalisé, vous pouvez l'utiliser pour faire des requêtes HTTP :
resp, err := client.Get("http://example.com/") if err != nil { // handle error } defer resp.Body.Close() // ...
Cette utilisation est similaire à la réalisation de requêtes en utilisant le standard http.Get, mais il vous permet de contrôler l'adresse IP source de la requête. Pensez à remplacer localAddr par l'adresse IP souhaitée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!