synced ported cors middleware
This commit is contained in:
parent
e5f1bc3c37
commit
2e43518bb4
|
@ -134,13 +134,25 @@ func CORS(config CORSConfig) *hook.Handler[*core.RequestEvent] {
|
||||||
config.AllowMethods = DefaultCORSConfig.AllowMethods
|
config.AllowMethods = DefaultCORSConfig.AllowMethods
|
||||||
}
|
}
|
||||||
|
|
||||||
allowOriginPatterns := []string{}
|
allowOriginPatterns := make([]*regexp.Regexp, 0, len(config.AllowOrigins))
|
||||||
for _, origin := range config.AllowOrigins {
|
for _, origin := range config.AllowOrigins {
|
||||||
|
if origin == "*" {
|
||||||
|
continue // "*" is handled differently and does not need regexp
|
||||||
|
}
|
||||||
|
|
||||||
pattern := regexp.QuoteMeta(origin)
|
pattern := regexp.QuoteMeta(origin)
|
||||||
pattern = strings.ReplaceAll(pattern, "\\*", ".*")
|
pattern = strings.ReplaceAll(pattern, "\\*", ".*")
|
||||||
pattern = strings.ReplaceAll(pattern, "\\?", ".")
|
pattern = strings.ReplaceAll(pattern, "\\?", ".")
|
||||||
pattern = "^" + pattern + "$"
|
pattern = "^" + pattern + "$"
|
||||||
allowOriginPatterns = append(allowOriginPatterns, pattern)
|
|
||||||
|
re, err := regexp.Compile(pattern)
|
||||||
|
if err != nil {
|
||||||
|
// This is to preserve previous behaviour - invalid patterns were just ignored.
|
||||||
|
// If we would turn this to panic, users with invalid patterns
|
||||||
|
// would have applications crashing in production due unrecovered panic.
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
allowOriginPatterns = append(allowOriginPatterns, re)
|
||||||
}
|
}
|
||||||
|
|
||||||
allowMethods := strings.Join(config.AllowMethods, ",")
|
allowMethods := strings.Join(config.AllowMethods, ",")
|
||||||
|
@ -210,7 +222,7 @@ func CORS(config CORSConfig) *hook.Handler[*core.RequestEvent] {
|
||||||
}
|
}
|
||||||
if checkPatterns {
|
if checkPatterns {
|
||||||
for _, re := range allowOriginPatterns {
|
for _, re := range allowOriginPatterns {
|
||||||
if match, _ := regexp.MatchString(re, origin); match {
|
if match := re.MatchString(origin); match {
|
||||||
allowOrigin = origin
|
allowOrigin = origin
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue