Go语言(Golang)代码示例:获取HTTP请求客户端的IP地址
package main
import (
"fmt"
"net"
"net/http"
)
func getClientIP(r *http.Request) string {
// 尝试从标准HTTP头中获取IP地址
ip := r.Header.Get("X-Forwarded-For")
if ip == "" || ip == "unknown" {
ip = r.Header.Get("X-Real-IP")
}
if ip == "" || ip == "unknown" {
host, _, err := net.SplitHostPort(r.RemoteAddr)
if err == nil {
ip = host
}
}
return ip
}
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
ip := getClientIP(r)
fmt.Fprintf(w, "客户端IP地址: %s\n", ip)
})
http.ListenAndServe(":8080", nil)
}
这段代码定义了一个getClientIP
函数,用于从HTTP请求中获取客户端的IP地址。它首先检查了两个自定义HTTP头X-Forwarded-For
和X-Real-IP
,如果这些头不存在,则直接从r.RemoteAddr
中提取IP地址。在main
函数中,它启动了一个简单的HTTP服务器,并定义了一个处理函数,该处理函数使用getClientIP
函数来响应客户端的请求,显示其IP地址。
评论已关闭