浏览代码

新增ip获取

dcsunny 2 年之前
父节点
当前提交
84953da038
共有 1 个文件被更改,包括 28 次插入0 次删除
  1. 28 0
      net/ip.go

+ 28 - 0
net/ip.go

@@ -0,0 +1,28 @@
+package net
+
+import (
+	"net"
+	"net/http"
+	"strings"
+)
+
+func ClientIP(request *http.Request) string {
+	clientIP := request.Header.Get("X-Forward-For")
+	clientIP = strings.TrimSpace(strings.Split(clientIP, ",")[0])
+	if clientIP == "" {
+		clientIP = strings.TrimSpace(request.Header.Get("X-Real-Ip"))
+	}
+	if clientIP != "" {
+		return clientIP
+	}
+
+	if addr := request.Header.Get("X-Appengine-Remote-Addr"); addr != "" {
+		return addr
+	}
+
+	if ip, _, err := net.SplitHostPort(strings.TrimSpace(request.RemoteAddr)); err == nil {
+		return ip
+	}
+
+	return ""
+}