diff --git a/go.mod b/go.mod index 82d467f..650ad12 100644 --- a/go.mod +++ b/go.mod @@ -12,23 +12,21 @@ require ( github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea // indirect github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect github.com/fsnotify/fsnotify v1.4.7 - github.com/ghodss/yaml v1.0.0 // indirect github.com/gogo/protobuf v1.1.1 // indirect github.com/golang/protobuf v1.3.3 github.com/google/btree v1.0.0 // indirect github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f // indirect + github.com/gorilla/handlers v1.4.2 github.com/gorilla/mux v1.6.1 github.com/gorilla/websocket v1.4.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.14.6 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/jonboulle/clockwork v0.1.0 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/natefinch/lumberjack v0.0.0-20170531160350-a96e63847dc3 github.com/pkg/errors v0.8.1 github.com/prometheus/client_golang v0.9.1 // indirect - github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 // indirect github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 // indirect github.com/prometheus/procfs v0.0.0-20181126161756-619930b0b471 // indirect github.com/sirupsen/logrus v1.4.2 @@ -42,11 +40,8 @@ require ( go.uber.org/atomic v1.3.2 // indirect go.uber.org/multierr v1.1.0 // indirect go.uber.org/zap v1.9.1 // indirect - golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect golang.org/x/net v0.0.0-20200625001655-4c5254603344 - golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd // indirect golang.org/x/time v0.0.0-20181108054448-85acf8d2951c // indirect - google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884 // indirect google.golang.org/grpc v1.29.1 gopkg.in/yaml.v2 v2.3.0 // indirect ) diff --git a/go.sum b/go.sum index b0e9c8e..079d608 100644 --- a/go.sum +++ b/go.sum @@ -72,6 +72,8 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f h1:9oNbS1z4rVpbnkHBdPZU4jo9bSmrLpII768arSyMFgk= github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/handlers v1.4.2 h1:0QniY0USkHQ1RGCLfKxeNHK9bkDHGRYGNDFBCS+YARg= +github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.6.1 h1:KOwqsTYZdeuMacU7CxjMNYEKeBvLbxW+psodrbcEa3A= github.com/gorilla/mux v1.6.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= diff --git a/pkg/cmd/flags/params.go b/pkg/cmd/flags/params.go index 6d2f5a4..53d7730 100644 --- a/pkg/cmd/flags/params.go +++ b/pkg/cmd/flags/params.go @@ -21,6 +21,8 @@ import ( "github.com/natefinch/lumberjack" "github.com/spf13/pflag" + + "github.com/gorilla/handlers" ) // Parameters is the parameters for Speedle @@ -103,14 +105,18 @@ type StrParamDetail struct { func (k *Parameters) NewHTTPServer(handler http.Handler) (*http.Server, error) { insecure, _ := strconv.ParseBool(k.Insecure.Value) + headersOk := handlers.AllowedHeaders([]string{"X-Requested-With", "Content-Type"}) + originsOk := handlers.AllowedOrigins([]string{"*"}) + methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "DELETE", "OPTIONS"}) + cosHandler := handlers.CORS(originsOk, headersOk, methodsOk)(handler) if insecure { server := http.Server{ Addr: k.Endpoint.Value, - Handler: handler, + Handler: cosHandler, } return &server, nil } - return k.newTLSServer(handler) + return k.newTLSServer(cosHandler) } func (k *Parameters) newTLSServer(handler http.Handler) (*http.Server, error) {