ホームページ  >  記事  >  バックエンド開発  >  golangはリクエストIPを取得します

golangはリクエストIPを取得します

WBOY
WBOYオリジナル
2023-05-10 09:57:062385ブラウズ

ネットワーク アプリケーションを開発する場合、要求 IP アドレスを取得することは非常に一般的な要件です。 Golang では、リクエスト IP アドレスの取得も非常に簡単です。

Golang では、net/http パッケージの Request 構造を使用して、リクエスト IP アドレスを取得できます。具体的には、Request 構造体の RemoteAddr 属性を通じてリクエスト IP アドレスを取得できます。

以下は、Golang を使用してリクエスト IP アドレスを取得する方法を示す簡単なサンプル プログラムです。

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        ip := r.RemoteAddr
        fmt.Printf("Request from IP address: %s
", ip)
        fmt.Fprintf(w, "Request from IP address: %s
", ip)
    })

    http.ListenAndServe(":8080", nil)
}

上記のサンプル プログラムでは、http.HandleFunc## を使用します。 # function ルート ハンドラー関数をルート パスにバインドします。ルート処理関数では、r.RemoteAddr を通じてリクエスト IP アドレスを取得し、それをコンソールと応答コンテンツに出力します。最後に、http.ListenAndServe 関数を通じて HTTP サーバーを起動し、ポート 8080 でリッスンします。

サーバーにアクセスすると、コンソールは次のような情報を出力します。

Request from IP address: 127.0.0.1:58226

上記の出力は、リクエストが IP アドレス 127.0.0.1 とポートを持つクライアントから送信されたことを示しています。 58226。

ただし、特にリバース プロキシが使用されている場合、

Request.RemoteAddr によって取得される IP アドレスはクライアントの実際の IP アドレスではない可能性があることに注意してください。この場合、カスタム要求ヘッダーなどから、他の方法を使用してクライアントの実際の IP アドレスを取得する必要があります。

以上がgolangはリクエストIPを取得しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。