I'm trying to set a header in my Go web server. I'm using gorilla/mux
and net/http
packages.
I'd like to set Access-Control-Allow-Origin: *
to allow cross domain AJAX.
Here's my Go code:
func saveHandler(w http.ResponseWriter, r *http.Request) {
// do some stuff with the request data
}
func main() {
r := mux.NewRouter()
r.HandleFunc("/save", saveHandler)
http.Handle("/", r)
http.ListenAndServe(":"+port, nil)
}
The net/http
package has documentation describing sending http request headers as if it were a client - I'm not exactly sure how to set response headers?
Never mind, I figured it out - I used the
Set()
method onHeader()
(doh!)My handler looks like this now:
Maybe this will help someone as caffeine deprived as myself sometime :)
I know this is a different twist on the answer, but isn't this more of a concern for a web server? For example, nginx, could help.
Adding nginx in front of your go service in production seems wise. It provides a lot more feature for authorizing, logging,and modifying requests. Also, it gives the ability to control who has access to your service and not only that but one can specify different behavior for specific locations in your app, as demonstrated above.
I could go on about why to use a web server with your go api, but I think that's a topic for another discussion.