diff --git a/context.go b/context.go index be6262df..0cebbf2c 100644 --- a/context.go +++ b/context.go @@ -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 diff --git a/context_test.go b/context_test.go index 7c9e0c7f..adce7121 100644 --- a/context_test.go +++ b/context_test.go @@ -412,6 +412,10 @@ func TestContextClientIP(t *testing.T) { 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") + + c.Request.Header.Set("X-Forwarded-For", "30.30.30.30") + assert.Equal(t, c.ClientIP(), "30.30.30.30") + c.Request.Header.Del("X-Forwarded-For") } func TestContextContentType(t *testing.T) {