{"title":"Golang 获取客户端 IP 地址:使用 X-Forwarded-For 头部信息","description":"本文介绍如何在 Golang 中使用 net/http 包获取 HTTP 请求的 X-Forwarded-For 头部信息,并从中提取真实的客户端 IP 地址。","keywords":"Golang, X-Forwarded-For, 客户端 IP, IP 地址, HTTP 请求头部信息, net/http","content":"在 Go 语言中,可以使用 `net/http` 包来获取 HTTP 请求的头部信息,包括 `X-Forwarded-For` 头部信息来获取客户端的 IP 地址。\n\n以下是一个示例代码:\n\ngo\npackage main\n\nimport (\n\t"fmt"\n\t"net/http"\n\t"strings"\n)\n\nfunc main() {\n\thttp.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {\n\t\txForwardedFor := r.Header.Get("X-Forwarded-For")\n\t\tips := strings.Split(xForwardedFor, ",")\n\n\t\t// 获取最后一个 IP 地址(客户端 IP)\n\t\tclientIP := strings.TrimSpace(ips[len(ips)-1])\n\n\t\tfmt.Println("Client IP:", clientIP)\n\n\t\tw.WriteHeader(http.StatusOK)\n\t\tw.Write([]byte("Hello, World!"))\n\t})\n\n\thttp.ListenAndServe(":8080", nil)\n}\n\n\n在上面的示例中,我们通过 `r.Header.Get("X-Forwarded-For")` 来获取 `X-Forwarded-For` 头部信息,并使用 `strings.Split()` 函数将其拆分为 IP 地址的数组。然后,我们通过 `ips[len(ips)-1]` 获取最后一个 IP 地址,即客户端 IP 地址。\n\n请注意, `X-Forwarded-For` 头部信息是一个可信任的客户端 IP 地址列表,它可能包含多个 IP 地址,每个 IP 地址之间由逗号分隔。因此,我们在获取客户端 IP 地址时,选择最后一个 IP 地址来获取真实的客户端 IP 地址。"}

Golang 获取客户端 IP 地址:使用 X-Forwarded-For 头部信息

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

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