| package mux_test |
| |
| import ( |
| "fmt" |
| "net/http" |
| "net/http/httptest" |
| |
| "github.com/gorilla/mux" |
| ) |
| |
| func ExampleCORSMethodMiddleware() { |
| r := mux.NewRouter() |
| |
| r.HandleFunc("/foo", func(w http.ResponseWriter, r *http.Request) { |
| // Handle the request |
| }).Methods(http.MethodGet, http.MethodPut, http.MethodPatch) |
| r.HandleFunc("/foo", func(w http.ResponseWriter, r *http.Request) { |
| w.Header().Set("Access-Control-Allow-Origin", "http://example.com") |
| w.Header().Set("Access-Control-Max-Age", "86400") |
| }).Methods(http.MethodOptions) |
| |
| r.Use(mux.CORSMethodMiddleware(r)) |
| |
| rw := httptest.NewRecorder() |
| req, _ := http.NewRequest("OPTIONS", "/foo", nil) // needs to be OPTIONS |
| req.Header.Set("Access-Control-Request-Method", "POST") // needs to be non-empty |
| req.Header.Set("Access-Control-Request-Headers", "Authorization") // needs to be non-empty |
| req.Header.Set("Origin", "http://example.com") // needs to be non-empty |
| |
| r.ServeHTTP(rw, req) |
| |
| fmt.Println(rw.Header().Get("Access-Control-Allow-Methods")) |
| fmt.Println(rw.Header().Get("Access-Control-Allow-Origin")) |
| // Output: |
| // GET,PUT,PATCH,OPTIONS |
| // http://example.com |
| } |