wlf f051014ac2 提交正常运行的所有代码 | 1 year ago | |
---|---|---|
.. | ||
.travis.yml | 1 year ago | |
LICENSE | 1 year ago | |
README.md | 1 year ago | |
canonical.go | 1 year ago | |
compress.go | 1 year ago | |
doc.go | 1 year ago | |
handlers.go | 1 year ago | |
proxy_headers.go | 1 year ago |
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:
LoggingHandler
for logging HTTP requests in the Apache Common Log
Format.CombinedLoggingHandler
for logging HTTP requests in the Apache Combined Log
Format commonly used by
both Apache and nginx.CompressHandler
for gzipping responses.ContentTypeHandler
for validating requests against a list of accepted
content types.MethodHandler
for matching HTTP methods against handlers in a
map[string]http.Handler
ProxyHeaders
for populating r.RemoteAddr
and r.URL.Scheme
based on the
X-Forwarded-For
, X-Real-IP
, X-Forwarded-Proto
and RFC7239 Forwarded
headers when running a Go server behind a HTTP reverse proxy.CanonicalHost
for re-directing to the preferred host when handling multiple
domains (i.e. multiple CNAME aliases).Other handlers are documented on the Gorilla website.
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))
}
BSD licensed. See the included LICENSE file for details.