"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo vincular un cliente Go HTTP a una dirección IP específica?

¿Cómo puedo vincular un cliente Go HTTP a una dirección IP específica?

Publicado el 2024-11-10
Navegar:116

How Can I Bind a Go HTTP Client to a Specific IP Address?

Vincular un cliente http.a una dirección IP en Go

En el ámbito de la informática distribuida, a menudo es necesario controlar la IP de origen Dirección desde la que se originan las solicitudes HTTP. Con varias NIC en una máquina cliente, esta granularidad puede ser esencial.

Considere el siguiente código de cliente HTTP básico:

package main

import "net/http"

func main() {
    webclient := &http.Client{}
    req, _ := http.NewRequest("GET", "http://www.google.com", nil)
    httpResponse, _ := webclient.Do(req)
    defer httpResponse.Body.Close()
}

Para vincular este cliente a una NIC o dirección IP específica, debemos modificar su campo Transporte. Usaremos un net.Transport personalizado que emplea un net.Dialer personalizado. El net.Dialer, a su vez, nos permite especificar la dirección local para las conexiones salientes.

import (
    "net"
    "net/http"
)

func main() {
    localAddr, err := net.ResolveIPAddr("ip", "")
    if err != nil {
        panic(err)
    }
    localTCPAddr := net.TCPAddr{
        IP: localAddr.IP,
    }

    webclient := &http.Client{
        Transport: &http.Transport{
            Proxy:                http.ProxyFromEnvironment,
            DialContext:          (&net.Dialer{LocalAddr: &localTCPAddr}).DialContext,
            MaxIdleConns:          100,
            IdleConnTimeout:       90 * time.Second,
            TLSHandshakeTimeout:   10 * time.Second,
            ExpectContinueTimeout: 1 * time.Second,
        },
    }
}

Con esta modificación, nuestro cliente HTTP ahora está vinculado a la dirección IP especificada, lo que garantiza que todas las solicitudes salientes se originen desde la NIC deseada.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3