From 1962cb3c524f06c672b5cc132757b6187b9c9835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Thu, 18 Jul 2024 17:29:18 +0200 Subject: [PATCH] v0.0.486 add ginext -> CorsAllowHeader --- ginext/cors.go | 5 +++-- ginext/engine.go | 5 ++++- goextVersion.go | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ginext/cors.go b/ginext/cors.go index ec6e0c2..368f52b 100644 --- a/ginext/cors.go +++ b/ginext/cors.go @@ -3,13 +3,14 @@ package ginext import ( "github.com/gin-gonic/gin" "net/http" + "strings" ) -func CorsMiddleware() gin.HandlerFunc { +func CorsMiddleware(header []string) gin.HandlerFunc { return func(c *gin.Context) { c.Writer.Header().Set("Access-Control-Allow-Origin", "*") c.Writer.Header().Set("Access-Control-Allow-Credentials", "true") - c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With") + c.Writer.Header().Set("Access-Control-Allow-Headers", strings.Join(header, ", ")) c.Writer.Header().Set("Access-Control-Allow-Methods", "OPTIONS, GET, POST, PUT, PATCH, DELETE, COUNT") if c.Request.Method == "OPTIONS" { diff --git a/ginext/engine.go b/ginext/engine.go index 1d0bf5c..4daa009 100644 --- a/ginext/engine.go +++ b/ginext/engine.go @@ -21,6 +21,7 @@ type GinWrapper struct { opt Options allowCors bool + corsAllowHeader []string ginDebug bool bufferBody bool requestTimeout time.Duration @@ -41,6 +42,7 @@ type ginRouteSpec struct { type Options struct { AllowCors *bool // Add cors handler to allow all CORS requests on the default http methods + CorsAllowHeader *[]string // override the default values of Access-Control-Allow-Headers (AllowCors must be true) GinDebug *bool // Set gin.debug to true (adds more logs) SuppressGinLogs *bool // Suppress our custom gin logs (even if GinDebug == true) BufferBody *bool // Buffers the input body stream, this way the ginext error handler can later include the whole request body @@ -75,6 +77,7 @@ func NewEngine(opt Options) *GinWrapper { opt: opt, suppressGinLogs: langext.Coalesce(opt.SuppressGinLogs, false), allowCors: langext.Coalesce(opt.AllowCors, false), + corsAllowHeader: langext.Coalesce(opt.CorsAllowHeader, []string{"Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token", "Authorization", "accept", "origin", "Cache-Control", "X-Requested-With"}), ginDebug: ginDebug, bufferBody: langext.Coalesce(opt.BufferBody, false), requestTimeout: langext.Coalesce(opt.Timeout, 24*time.Hour), @@ -87,7 +90,7 @@ func NewEngine(opt Options) *GinWrapper { engine.RedirectTrailingSlash = false if wrapper.allowCors { - engine.Use(CorsMiddleware()) + engine.Use(CorsMiddleware(wrapper.corsAllowHeader)) } if ginDebug && !wrapper.suppressGinLogs { diff --git a/goextVersion.go b/goextVersion.go index 737562e..acc4491 100644 --- a/goextVersion.go +++ b/goextVersion.go @@ -1,5 +1,5 @@ package goext -const GoextVersion = "0.0.485" +const GoextVersion = "0.0.486" -const GoextVersionTimestamp = "2024-07-16T15:22:18+0200" +const GoextVersionTimestamp = "2024-07-18T17:29:18+0200"