Go语言(Golang)代码示例:获取HTTP请求客户端的IP地址
    		       		warning:
    		            这篇文章距离上次修改已过437天,其中的内容可能已经有所变动。
    		        
        		                
                
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地址。
评论已关闭