mirror of
https://github.com/gin-gonic/gin.git
synced 2025-10-15 04:57:07 +08:00
ClientIP() fix for single item in X-Forwarded-For.
This commit is contained in:
parent
967e62337a
commit
289e6572cc
@ -280,8 +280,10 @@ func (c *Context) ClientIP() string {
|
||||
return clientIP
|
||||
}
|
||||
clientIP = c.Request.Header.Get("X-Forwarded-For")
|
||||
clientIP = strings.Split(clientIP, ",")[0]
|
||||
if len(clientIP) > 0 {
|
||||
if strings.Contains(clientIP, ",") {
|
||||
clientIP = strings.Split(clientIP, ",")[0]
|
||||
}
|
||||
return strings.TrimSpace(clientIP)
|
||||
}
|
||||
return c.Request.RemoteAddr
|
||||
|
@ -403,12 +403,15 @@ func TestContextClientIP(t *testing.T) {
|
||||
|
||||
c.Request.Header.Set("X-Real-IP", "10.10.10.10")
|
||||
c.Request.Header.Set("X-Forwarded-For", "20.20.20.20 , 30.30.30.30")
|
||||
c.Request.Header.Set("X-Forwarded-For", "30.30.30.30")
|
||||
c.Request.RemoteAddr = "40.40.40.40"
|
||||
|
||||
assert.Equal(t, c.ClientIP(), "10.10.10.10")
|
||||
c.Request.Header.Del("X-Real-IP")
|
||||
assert.Equal(t, c.ClientIP(), "20.20.20.20")
|
||||
c.Request.Header.Del("X-Forwarded-For")
|
||||
assert.Equal(t, c.ClientIP(), "30.30.30.30")
|
||||
c.Request.Header.Del("X-Forwarded-For")
|
||||
assert.Equal(t, c.ClientIP(), "40.40.40.40")
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user