Преглед на файлове

ClientIP() must trim the white spaces

Manu Mtz-Almeida преди 10 години
родител
ревизия
0a9030f9d7
променени са 2 файла, в които са добавени 10 реда и са изтрити 7 реда
  1. 4 4
      context.go
  2. 6 3
      context_test.go

+ 4 - 4
context.go

@@ -275,16 +275,16 @@ func (c *Context) BindWith(obj interface{}, b binding.Binding) error {
 }
 }
 
 
 func (c *Context) ClientIP() string {
 func (c *Context) ClientIP() string {
-	clientIP := c.Request.Header.Get("X-Real-IP")
+	clientIP := strings.TrimSpace(c.Request.Header.Get("X-Real-IP"))
 	if len(clientIP) > 0 {
 	if len(clientIP) > 0 {
 		return clientIP
 		return clientIP
 	}
 	}
 	clientIP = c.Request.Header.Get("X-Forwarded-For")
 	clientIP = c.Request.Header.Get("X-Forwarded-For")
-	clientIP = strings.Split(clientIP, ",")[0]
+	clientIP = strings.TrimSpace(strings.Split(clientIP, ",")[0])
 	if len(clientIP) > 0 {
 	if len(clientIP) > 0 {
-		return strings.TrimSpace(clientIP)
+		return clientIP
 	}
 	}
-	return c.Request.RemoteAddr
+	return strings.TrimSpace(c.Request.RemoteAddr)
 }
 }
 
 
 func (c *Context) ContentType() string {
 func (c *Context) ContentType() string {

+ 6 - 3
context_test.go

@@ -401,15 +401,18 @@ func TestContextClientIP(t *testing.T) {
 	c, _, _ := createTestContext()
 	c, _, _ := createTestContext()
 	c.Request, _ = http.NewRequest("POST", "/", nil)
 	c.Request, _ = http.NewRequest("POST", "/", nil)
 
 
-	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.RemoteAddr = "40.40.40.40"
+	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.RemoteAddr = "  40.40.40.40 "
 
 
 	assert.Equal(t, c.ClientIP(), "10.10.10.10")
 	assert.Equal(t, c.ClientIP(), "10.10.10.10")
+
 	c.Request.Header.Del("X-Real-IP")
 	c.Request.Header.Del("X-Real-IP")
 	assert.Equal(t, c.ClientIP(), "20.20.20.20")
 	assert.Equal(t, c.ClientIP(), "20.20.20.20")
+
 	c.Request.Header.Set("X-Forwarded-For", "30.30.30.30")
 	c.Request.Header.Set("X-Forwarded-For", "30.30.30.30")
 	assert.Equal(t, c.ClientIP(), "30.30.30.30")
 	assert.Equal(t, c.ClientIP(), "30.30.30.30")
+
 	c.Request.Header.Del("X-Forwarded-For")
 	c.Request.Header.Del("X-Forwarded-For")
 	assert.Equal(t, c.ClientIP(), "40.40.40.40")
 	assert.Equal(t, c.ClientIP(), "40.40.40.40")
 }
 }