Append elements on match, instead of removing for cors-annotations (#8185)

* fixes https://github.com/kubernetes/ingress-nginx/issues/8168 by appending elements on match, instead of removing

* refactor the corsOriginRegex comparison, and initialize CorsAllowOrigin
This commit is contained in:
Aibek 2022-02-13 13:39:47 -05:00 committed by GitHub
parent 86964b15a8
commit 5754eb60f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -121,19 +121,22 @@ func (c cors) Parse(ing *networking.Ingress) (interface{}, error) {
config.CorsEnabled = false
}
config.CorsAllowOrigin = []string{}
unparsedOrigins, err := parser.GetStringAnnotation("cors-allow-origin", ing)
if err == nil {
config.CorsAllowOrigin = strings.Split(unparsedOrigins, ",")
for i, origin := range config.CorsAllowOrigin {
origins := strings.Split(unparsedOrigins, ",")
for _, origin := range origins {
origin = strings.TrimSpace(origin)
if origin == "*" {
config.CorsAllowOrigin = []string{"*"}
break
}
if !corsOriginRegex.MatchString(origin) {
klog.Errorf("Error parsing cors-allow-origin parameters. Supplied incorrect origin: %s. Skipping.", origin)
config.CorsAllowOrigin = append(config.CorsAllowOrigin[:i], config.CorsAllowOrigin[i+1:]...)
continue
}
config.CorsAllowOrigin = append(config.CorsAllowOrigin, origin)
klog.Infof("Current config.corsAllowOrigin %v", config.CorsAllowOrigin)
}
} else {