github.com/lingyao2333/mo-zero@v1.4.1/rest/httpx/util.go (about) 1 package httpx 2 3 import "net/http" 4 5 const xForwardedFor = "X-Forwarded-For" 6 7 // GetFormValues returns the form values. 8 func GetFormValues(r *http.Request) (map[string]interface{}, error) { 9 if err := r.ParseForm(); err != nil { 10 return nil, err 11 } 12 13 if err := r.ParseMultipartForm(maxMemory); err != nil { 14 if err != http.ErrNotMultipart { 15 return nil, err 16 } 17 } 18 19 params := make(map[string]interface{}, len(r.Form)) 20 for name := range r.Form { 21 formValue := r.Form.Get(name) 22 if len(formValue) > 0 { 23 params[name] = formValue 24 } 25 } 26 27 return params, nil 28 } 29 30 // GetRemoteAddr returns the peer address, supports X-Forward-For. 31 func GetRemoteAddr(r *http.Request) string { 32 v := r.Header.Get(xForwardedFor) 33 if len(v) > 0 { 34 return v 35 } 36 37 return r.RemoteAddr 38 }