重构项目的实现,优化使用方法与使用逻辑
This commit is contained in:
26
middleware/clientip.go
Normal file
26
middleware/clientip.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package middleware
|
||||
|
||||
import "net/http"
|
||||
|
||||
// GetClientIP 获取客户端真实 IP
|
||||
func GetClientIP(r *http.Request) string {
|
||||
xff := r.Header.Get("X-Forwarded-For")
|
||||
if xff != "" {
|
||||
for i := 0; i < len(xff); i++ {
|
||||
if xff[i] == ',' {
|
||||
return xff[:i]
|
||||
}
|
||||
}
|
||||
return xff
|
||||
}
|
||||
if xri := r.Header.Get("X-Real-IP"); xri != "" {
|
||||
return xri
|
||||
}
|
||||
remoteAddr := r.RemoteAddr
|
||||
for i := len(remoteAddr) - 1; i >= 0; i-- {
|
||||
if remoteAddr[i] == ':' {
|
||||
return remoteAddr[:i]
|
||||
}
|
||||
}
|
||||
return remoteAddr
|
||||
}
|
||||
Reference in New Issue
Block a user