mirror of
https://github.com/labstack/echo.git
synced 2024-12-24 20:14:31 +02:00
Merge branch 'master' into fix_router_find_after_invalid_set_param_values
This commit is contained in:
commit
b166376dd6
@ -276,7 +276,11 @@ func (c *context) RealIP() string {
|
||||
}
|
||||
// Fall back to legacy behavior
|
||||
if ip := c.request.Header.Get(HeaderXForwardedFor); ip != "" {
|
||||
return strings.Split(ip, ", ")[0]
|
||||
i := strings.IndexAny(ip, ", ")
|
||||
if i > 0 {
|
||||
return ip[:i]
|
||||
}
|
||||
return ip
|
||||
}
|
||||
if ip := c.request.Header.Get(HeaderXRealIP); ip != "" {
|
||||
return ip
|
||||
|
@ -72,6 +72,15 @@ func BenchmarkAllocXML(b *testing.B) {
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkRealIPForHeaderXForwardFor(b *testing.B) {
|
||||
c := context{request: &http.Request{
|
||||
Header: http.Header{HeaderXForwardedFor: []string{"127.0.0.1, 127.0.1.1, "}},
|
||||
}}
|
||||
for i := 0; i < b.N; i++ {
|
||||
c.RealIP()
|
||||
}
|
||||
}
|
||||
|
||||
func (t *Template) Render(w io.Writer, name string, data interface{}, c Context) error {
|
||||
return t.templates.ExecuteTemplate(w, name, data)
|
||||
}
|
||||
@ -881,6 +890,14 @@ func TestContext_RealIP(t *testing.T) {
|
||||
},
|
||||
"127.0.0.1",
|
||||
},
|
||||
{
|
||||
&context{
|
||||
request: &http.Request{
|
||||
Header: http.Header{HeaderXForwardedFor: []string{"127.0.0.1"}},
|
||||
},
|
||||
},
|
||||
"127.0.0.1",
|
||||
},
|
||||
{
|
||||
&context{
|
||||
request: &http.Request{
|
||||
|
Loading…
Reference in New Issue
Block a user