package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { referer := r.Referer() fmt.Printf("Referer: %s", referer) } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }
package main import ( "fmt" "net/http" ) func logger(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { referer := r.Referer() fmt.Printf("%s - Referer: %s\n", r.URL.Path, referer) next.ServeHTTP(w, r) }) } func handler(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello, world!")) } func main() { http.Handle("/", logger(http.HandlerFunc(handler))) http.ListenAndServe(":8080", nil) }In this example, we define a logger middleware function that uses the Request.Referer() method to log the Referer header for every incoming HTTP request. We wrap the handler function with this middleware function to add the logging functionality to our server.