Package xff is a net/http middleware/handler to parse Forwarded HTTP Extension in Golang.
Example usage
Install xff:
go get github.com/sebest/xff
Edit server.go:
package main import ( "net/http" "github.com/sebest/xff" ) func main() { handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello from " + r.RemoteAddr + "\n")) }) xffmw, _ := xff.Default() http.ListenAndServe(":8080", xffmw.Handler(handler)) }
Then run your server:
The server now runs on localhost:8080:
$ curl -D - -H 'X-Forwarded-For: 42.42.42.42' http://localhost:8080/
HTTP/1.1 200 OK
Date: Fri, 20 Feb 2015 20:03:02 GMT
Content-Length: 29
Content-Type: text/plain; charset=utf-8
hello from 42.42.42.42:52661