v0.0.486 add ginext -> CorsAllowHeader
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 3m51s
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 3m51s
This commit is contained in:
parent
84f124dd4d
commit
1962cb3c52
@ -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" {
|
||||
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user