在Go语言中,可以使用net/http包来获取HTTP请求的头部信息,包括X-Forwarded-For头部信息来获取客户端的IP地址。

以下是一个示例代码:

package main

import (
	"fmt"
	"net/http"
	"strings"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		xForwardedFor := r.Header.Get("X-Forwarded-For")
		ips := strings.Split(xForwardedFor, ",")

		// 获取最后一个IP地址(客户端IP)
		clientIP := strings.TrimSpace(ips[len(ips)-1])

		fmt.Println("Client IP:", clientIP)

		w.WriteHeader(http.StatusOK)
		w.Write([]byte("Hello, World!"))
	})

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

在上面的示例中,我们通过r.Header.Get("X-Forwarded-For")来获取X-Forwarded-For头部信息,并使用strings.Split()函数将其拆分为IP地址的数组。然后,我们通过ips[len(ips)-1]获取最后一个IP地址,即客户端IP地址。

请注意,X-Forwarded-For头部信息是一个可信任的客户端IP地址列表,它可能包含多个IP地址,每个IP地址之间由逗号分隔。因此,我们在获取客户端IP地址时,选择最后一个IP地址来获取真实的客户端IP地址

golang 从X-Forwarded-For获取客户IP

原文地址: https://www.cveoy.top/t/topic/iKr0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录