ClientIP() fix for single item in X-Forwarded-For.

This commit is contained in:
jarm 2015-05-24 06:02:57 -05:00
parent 967e62337a
commit 289e6572cc
2 changed files with 6 additions and 1 deletions

View File

@ -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

View File

@ -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")
}