- update ip
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details

master v1.0.24
李光春 2 years ago
parent 2dc3acfcc2
commit c423c38c2e

@ -2,7 +2,7 @@
<a href="https://www.dtapp.net/">Golang Request</a>
</h1>
📦 Golang 请求
📦 Golang Request
[comment]: <> (go)
[![godoc](https://pkg.go.dev/badge/go.dtapp.net/gorequest?status.svg)](https://pkg.go.dev/go.dtapp.net/gorequest)

@ -10,3 +10,5 @@ var (
httpParamsModeXml = "XML"
httpParamsModeForm = "FORM"
)
const Version = "1.0.24"

@ -1,7 +1,9 @@
module go.dtapp.net/gorequest
go 1.18
go 1.19
require go.dtapp.net/gostring v1.0.5
require go.dtapp.net/gostring v1.0.6
require go.dtapp.net/gotime v1.0.4
require go.dtapp.net/gotime v1.0.5
require go.dtapp.net/gorandom v1.0.1 // indirect

@ -1,4 +1,6 @@
go.dtapp.net/gostring v1.0.5 h1:6sKrSdQ4so80+zvo+VDZ5pgWGREq2niTLv6GIF++HgY=
go.dtapp.net/gostring v1.0.5/go.mod h1:+ggrOvgQDQturi1QGsXEpyRN/ZPoRDaqhMujIk5lrgQ=
go.dtapp.net/gotime v1.0.4 h1:gOOkGKfhJwX+dsGHvnF2est09Oqvk7cihJkePddJ5a8=
go.dtapp.net/gotime v1.0.4/go.mod h1:Gq7eNLr2iMLP18UNWONRq4V3Uhf/ADp4bIrS+Tc6ktY=
go.dtapp.net/gorandom v1.0.1 h1:IWfMClh1ECPvyUjlqD7MwLq4mZdUusD1qAwAdsvEJBs=
go.dtapp.net/gorandom v1.0.1/go.mod h1:ZPdgalKpvFV/ATQqR0k4ns/F/IpITAZpx6WkWirr5Y8=
go.dtapp.net/gostring v1.0.6 h1:XqNaThEfHpweLofru5sBqm1UUzc9JWsXyB/M/rTk29w=
go.dtapp.net/gostring v1.0.6/go.mod h1:AMnnLjyNxH+cphxyASJGYCzWpVrkP5RncuVo8xL8s3E=
go.dtapp.net/gotime v1.0.5 h1:12aNgB2ULpP6QgQHEUkLilZ4ASvhpFxMFQkBwn0par8=
go.dtapp.net/gotime v1.0.5/go.mod h1:Gq7eNLr2iMLP18UNWONRq4V3Uhf/ADp4bIrS+Tc6ktY=

36
ip.go

@ -10,35 +10,39 @@ import (
// 解析 X-Real-IP 和 X-Forwarded-For 以便于反向代理nginx 或 haproxy可以正常工作。
func ClientIp(r *http.Request) string {
// CloudFlare
CfConnectingIp := strings.TrimSpace(r.Header.Get("Cf-Connecting-Ip"))
if CfConnectingIp != "" {
return CfConnectingIp
}
// 转发IP
xForwardedFor := r.Header.Get("X-Forwarded-For")
ip := strings.TrimSpace(strings.Split(xForwardedFor, ",")[0])
if ip != "" {
return ip
xForwardedFor := strings.TrimSpace(strings.Split(r.Header.Get("X-Forwarded-For"), ",")[0])
if xForwardedFor != "" {
return xForwardedFor
}
// 真实Ip
ip = strings.TrimSpace(r.Header.Get("X-Real-Ip"))
if ip != "" {
return ip
XRealIp := strings.TrimSpace(r.Header.Get("X-Real-Ip"))
if XRealIp != "" {
return XRealIp
}
// HTTP客户端IP
httpClientIp := r.Header.Get("HTTP_CLIENT_IP")
ip = strings.TrimSpace(strings.Split(httpClientIp, ",")[0])
if ip != "" {
return ip
HttpClientIp := strings.TrimSpace(strings.Split(r.Header.Get("HTTP_CLIENT_IP"), ",")[0])
if HttpClientIp != "" {
return HttpClientIp
}
// HTTP转发IP
HttpXForwardedFor := r.Header.Get("HTTP_X_FORWARDED_FOR")
ip = strings.TrimSpace(strings.Split(HttpXForwardedFor, ",")[0])
if ip != "" {
return ip
HttpXForwardedFor := strings.TrimSpace(strings.Split(r.Header.Get("HTTP_X_FORWARDED_FOR"), ",")[0])
if HttpXForwardedFor != "" {
return HttpXForwardedFor
}
// 系统
if ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr)); err == nil {
ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr))
if err == nil {
return ip
}

@ -1,3 +0,0 @@
package gorequest
const Version = "1.0.23"
Loading…
Cancel
Save