mirror of
https://github.com/openfaas/faas.git
synced 2025-06-19 12:36:40 +00:00
Allow CORS to GitHub raw
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
This commit is contained in:
24
gateway/handlers/cors.go
Normal file
24
gateway/handlers/cors.go
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package handlers
|
||||||
|
|
||||||
|
import "net/http"
|
||||||
|
|
||||||
|
type CorsHandler struct {
|
||||||
|
Upstream *http.Handler
|
||||||
|
AllowedHost string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c CorsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
// https://raw.githubusercontent.com/openfaas/store/master/store.json
|
||||||
|
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
|
||||||
|
w.Header().Set("Access-Control-Allow-Methods", "GET")
|
||||||
|
w.Header().Set("Access-Control-Allow-Origin", c.AllowedHost)
|
||||||
|
|
||||||
|
(*c.Upstream).ServeHTTP(w, r)
|
||||||
|
}
|
||||||
|
|
||||||
|
func DecorateWithCORS(upstream http.Handler, allowedHost string) http.Handler {
|
||||||
|
return CorsHandler{
|
||||||
|
Upstream: &upstream,
|
||||||
|
AllowedHost: allowedHost,
|
||||||
|
}
|
||||||
|
}
|
@ -143,7 +143,12 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fs := http.FileServer(http.Dir("./assets/"))
|
fs := http.FileServer(http.Dir("./assets/"))
|
||||||
r.PathPrefix("/ui/").Handler(http.StripPrefix("/ui", fs)).Methods("GET")
|
|
||||||
|
// This URL allows access from the UI to the OpenFaaS store
|
||||||
|
allowedCORSHost := "raw.githubusercontent.com"
|
||||||
|
fsCORS := internalHandlers.DecorateWithCORS(fs, allowedCORSHost)
|
||||||
|
|
||||||
|
r.PathPrefix("/ui/").Handler(http.StripPrefix("/ui", fsCORS)).Methods("GET")
|
||||||
|
|
||||||
r.HandleFunc("/", faasHandlers.RoutelessProxy).Methods("POST")
|
r.HandleFunc("/", faasHandlers.RoutelessProxy).Methods("POST")
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user