From aa55cd834f85f7af8316d3066f90a1b8ec59a76b Mon Sep 17 00:00:00 2001 From: Kevin Kandlbinder Date: Wed, 2 Mar 2022 13:40:18 +0100 Subject: [PATCH] Add CORS policy to API --- go.mod | 1 + go.sum | 2 ++ internal/web/api/api.go | 10 ++++++++++ 3 files changed, 13 insertions(+) diff --git a/go.mod b/go.mod index ad1aaf8..820277c 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( github.com/766b/chi-prometheus v0.0.0-20211217152057-87afa9aa2ca8 github.com/go-chi/chi v1.5.4 // indirect github.com/go-chi/chi/v5 v5.0.7 + github.com/go-chi/cors v1.2.0 // indirect github.com/golang-jwt/jwt/v4 v4.3.0 github.com/prometheus/client_golang v1.12.1 github.com/spf13/cobra v1.3.0 diff --git a/go.sum b/go.sum index c6e9926..52f2499 100644 --- a/go.sum +++ b/go.sum @@ -131,6 +131,8 @@ github.com/go-chi/chi v1.5.4 h1:QHdzF2szwjqVV4wmByUnTcsbIg7UGaQ0tPF2t5GcAIs= github.com/go-chi/chi v1.5.4/go.mod h1:uaf8YgoFazUOkPBG7fxPftUylNumIev9awIWOENIuEg= github.com/go-chi/chi/v5 v5.0.7 h1:rDTPXLDHGATaeHvVlLcR4Qe0zftYethFucbjVQ1PxU8= github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/cors v1.2.0 h1:tV1g1XENQ8ku4Bq3K9ub2AtgG+p16SmzeMSGTwrOKdE= +github.com/go-chi/cors v1.2.0/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= diff --git a/internal/web/api/api.go b/internal/web/api/api.go index ecac1aa..6354134 100644 --- a/internal/web/api/api.go +++ b/internal/web/api/api.go @@ -6,6 +6,7 @@ import ( "errors" chiprometheus "github.com/766b/chi-prometheus" "github.com/go-chi/chi/v5" + "github.com/go-chi/cors" "net/http" "strings" ) @@ -13,6 +14,15 @@ import ( func SetupAPI() chi.Router { router := chi.NewRouter() + router.Use(cors.Handler(cors.Options{ + AllowedOrigins: []string{"http://*", "https://*"}, + AllowedMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, + AllowedHeaders: []string{"Accept", "Authorization", "Content-Type", "X-CSRF-Token"}, + ExposedHeaders: []string{"Link"}, + AllowCredentials: false, + MaxAge: 300, + })) + m := chiprometheus.NewMiddleware("api") router.Use(m)