Przeglądaj źródła

Use only the ip part of request RemoteAddr

Donn Pebe 10 lat temu
rodzic
commit
c1719f7e20
2 zmienionych plików z 6 dodań i 2 usunięć
  1. 5 1
      context.go
  2. 1 1
      context_test.go

+ 5 - 1
context.go

@@ -8,6 +8,7 @@ import (
 	"errors"
 	"io"
 	"math"
+	"net"
 	"net/http"
 	"strings"
 	"time"
@@ -269,7 +270,10 @@ func (c *Context) ClientIP() string {
 			return clientIP
 		}
 	}
-	return strings.TrimSpace(c.Request.RemoteAddr)
+	if ip, _, err := net.SplitHostPort(strings.TrimSpace(c.Request.RemoteAddr)); err == nil {
+		return ip
+	}
+	return ""
 }
 
 func (c *Context) ContentType() string {

+ 1 - 1
context_test.go

@@ -478,7 +478,7 @@ 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.RemoteAddr = "  40.40.40.40 "
+	c.Request.RemoteAddr = "  40.40.40.40:42123 "
 
 	assert.Equal(t, c.ClientIP(), "10.10.10.10")