Karan Sharma

Ramblings on tech, cycling, and finance

Inspect HTTP Headers

The following snippet is used to create a mini HTTP server to dump all HTTP headers of an incoming request which can be useful for debugging.

package main

import (  
    "fmt"  
    "log"  
    "net/http"  
    "net/http/httputil"  
)

func index(w http.ResponseWriter, req *http.Request) {  
       // Save a copy of this request for debugging.  
       requestDump, err := httputil.DumpRequest(req, true)  
       if err != nil {  
               fmt.Println(err)  
               fmt.Fprintf(w, "oops! check logs\n")  
               return  
       }  
       fmt.Fprintf(w, "%v", string(requestDump))  
}  
  
func ping(w http.ResponseWriter, req *http.Request) {  
       fmt.Fprintf(w, "pong\n")  
}  
  
func main() {  
  
       http.HandleFunc("/", index)  
       http.HandleFunc("/ping", ping)  
  
       port := ":6666"  
       log.Printf("starting server at %s", port)  
       http.ListenAndServe(port, nil)  
}