diff --git a/go.mod b/go.mod index cdbcc6d..db4dbf1 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,7 @@ require ( github.com/jackc/pgconn v1.10.1 github.com/jackc/pgx/v4 v4.14.1 github.com/mitchellh/mapstructure v1.4.3 + github.com/rs/cors v1.8.2 github.com/sirupsen/logrus v1.8.1 github.com/spf13/viper v1.10.1 github.com/stretchr/testify v1.7.0 diff --git a/go.sum b/go.sum index af39cd6..226a9f7 100644 --- a/go.sum +++ b/go.sum @@ -660,6 +660,7 @@ github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0 github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= +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.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= @@ -1057,6 +1058,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= +github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= diff --git a/internal/api/server.go b/internal/api/server.go index 3d4f4e9..0c82921 100644 --- a/internal/api/server.go +++ b/internal/api/server.go @@ -37,6 +37,7 @@ import ( "github.com/go-playground/validator/v10" "github.com/gorilla/mux" "github.com/jackc/pgx/v4" + "github.com/rs/cors" "github.com/sirupsen/logrus" ) @@ -65,7 +66,9 @@ func NewServer(conn *pgx.Conn) *Server { func (server *Server) Start(port string) error { logrus.Info("Serving requests on port", port) - return http.ListenAndServe(port, util.Logger(server.Router)) + + // handle CORS + return http.ListenAndServe(port, util.Logger(cors.AllowAll().Handler(server.Router))) } func (server *Server) handleRoutes(router *mux.Router) { diff --git a/internal/util/format_ical.go b/internal/util/format_ical.go index 369909e..c2d1e3d 100644 --- a/internal/util/format_ical.go +++ b/internal/util/format_ical.go @@ -211,7 +211,6 @@ func SerializeICal(calendar []ICal) string { func (r *Formatter) FormatICAL(w http.ResponseWriter, respCode int, calendar []ICal, filename string) { // Set the content-type, content-disposition, and response code in the header w.Header().Set("Content-Type", "text/calendar") - w.Header().Set("Access-Control-Allow-Origin", "*") w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s", filename)) w.WriteHeader(respCode) diff --git a/internal/util/format_json.go b/internal/util/format_json.go index a8f86d0..b110085 100644 --- a/internal/util/format_json.go +++ b/internal/util/format_json.go @@ -75,7 +75,6 @@ func (r *Formatter) FormatJSON(w http.ResponseWriter, respCode int, data interfa // Set the content-type and response code in the header w.Header().Set("Content-Type", "application/json") - w.Header().Set("Access-Control-Allow-Origin", "*") w.WriteHeader(respCode) if data == nil { diff --git a/main.go b/main.go index 1ad9fb4..7256f22 100644 --- a/main.go +++ b/main.go @@ -26,7 +26,6 @@ along with pg_scheduleserv. If not, see . ******************************************************************GRP-GNU-AGPL*/ - package main import (