>백엔드 개발 >Golang >Go에서 HTTP 요청의 소스 IP 주소를 어떻게 지정하나요?

Go에서 HTTP 요청의 소스 IP 주소를 어떻게 지정하나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-23 09:54:30228검색

How to Specify the Source IP Address for HTTP Requests in Go?

HTTP 요청 사용자 정의: 소스 IP 주소 설정

질문:

사용된 소스 IP 주소를 어떻게 지정합니까? HTTP 요청의 경우 가겠습니까?

답변:

표준 라이브러리는 HTTP 요청에 대한 소스 IP 주소를 설정하는 방법을 직접 제공하지 않지만 클라이언트의 IP 주소를 사용자 정의하여 이를 달성할 수 있습니다. 사용자 정의 다이얼러를 사용하여 전송합니다.

사용자 정의 다이얼러 사용

소스 IP를 사용자 정의하려면 주소를 사용하면 사용자 정의 다이얼러를 생성하고 이를 클라이언트의 전송에 할당할 수 있습니다. 예는 다음과 같습니다.

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,
}

다이얼러에서 LocalAddr을 설정하면 HTTP 요청에 사용할 소스 IP 주소를 지정할 수 있습니다.

샘플 사용

한 번 사용자 정의 클라이언트를 만들었으면 이를 사용하여 HTTP 요청을 할 수 있습니다.

resp, err := client.Get("http://example.com/")
if err != nil {
    // handle error
}
defer resp.Body.Close()
// ...

이 사용법은 다음과 같습니다. 표준 http.Get을 사용하여 요청하는 것과 유사하지만 요청에 대한 소스 IP 주소를 제어할 수 있습니다. localAddr을 원하는 IP 주소로 바꾸는 것을 잊지 마세요.

위 내용은 Go에서 HTTP 요청의 소스 IP 주소를 어떻게 지정하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.