The httpforwarded
go package provides utility functions for working with the
Forwarded
HTTP header as defined in RFC-7239.
This header is proposed to replace the X-Forwarded-For
and X-Forwarded-Proto
headers, amongst others.
This package was heavily inspired by the mime
package in the standard library,
more specifically the ParseMediaType()
function.
This is a fork from https://github.com/theckman/httpforwarded, which seems to have become idle for several years.
This package copies some functions, without modification, from the Go standard library. As such, the entirety of this package is released under the same permissive BSD-style license as the Go language itself. Please see the contents of the LICENSE file for the full details of the license.
To install this package for consumption, you can run the following:
go get -u github.com/muhlemmer/httpforwarded
Given a *http.Request
:
// var req *http.Request
params, _ := httpforwarded.ParseFromRequest(req)
// you can then do something like this to get the first "for" param:
fmt.Printf("origin %s", params["for"][0])
Given a list of Forwarded
header values:
// var req *http.Request
headerValues := req.Header[http.CanonicalHeaderKey("forwarded")]
params, _ := httpforwarded.Parse(headerValues)
// you can then do something like this to get the first "for" param:
fmt.Printf("origin %s", params["for"][0])