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

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

Mary-Kate Olsen
풀어 주다: 2024-12-23 09:54:30
원래의
310명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿