mirror of https://github.com/containers/podman.git
* To aid in debugging log API request and response bodies at trace level. Events can be correlated using the X-Reference-Id. * Server now echos X-Reference-Id from client if set, otherwise generates an unique id. * Move logic for X-Reference-Id into middleware * Change uses of Header.Add() to Set() when setting Content-Type * Log API operations in Apache format using gorilla middleware * Port server code to use BaseContext and ConnContext Fixes #10053 Signed-off-by: Jhon Honce <jhonce@redhat.com> |
||
|---|---|---|
| .. | ||
| .travis.yml | ||
| LICENSE | ||
| README.md | ||
| canonical.go | ||
| compress.go | ||
| doc.go | ||
| handlers.go | ||
| proxy_headers.go | ||
README.md
gorilla/handlers
Package handlers is a collection of handlers (aka "HTTP middleware") for use
with Go's net/http package (or any framework supporting http.Handler), including:
LoggingHandlerfor logging HTTP requests in the Apache Common Log Format.CombinedLoggingHandlerfor logging HTTP requests in the Apache Combined Log Format commonly used by both Apache and nginx.CompressHandlerfor gzipping responses.ContentTypeHandlerfor validating requests against a list of accepted content types.MethodHandlerfor matching HTTP methods against handlers in amap[string]http.HandlerProxyHeadersfor populatingr.RemoteAddrandr.URL.Schemebased on theX-Forwarded-For,X-Real-IP,X-Forwarded-Protoand RFC7239Forwardedheaders when running a Go server behind a HTTP reverse proxy.CanonicalHostfor re-directing to the preferred host when handling multiple domains (i.e. multiple CNAME aliases).
Other handlers are documented on the Gorilla website.
Example
A simple example using handlers.LoggingHandler and handlers.CompressHandler:
import (
"net/http"
"github.com/gorilla/handlers"
)
func main() {
r := http.NewServeMux()
// Only log requests to our admin dashboard to stdout
r.Handle("/admin", handlers.LoggingHandler(os.Stdout, http.HandlerFunc(ShowAdminDashboard)))
r.HandleFunc("/", ShowIndex)
// Wrap our server with our gzip handler to gzip compress all responses.
http.ListenAndServe(":8000", handlers.CompressHandler(r))
}
License
BSD licensed. See the included LICENSE file for details.