summaryrefslogtreecommitdiff
path: root/vendor/github.com/gin-contrib/cors/cors.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/gin-contrib/cors/cors.go')
-rw-r--r--vendor/github.com/gin-contrib/cors/cors.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/vendor/github.com/gin-contrib/cors/cors.go b/vendor/github.com/gin-contrib/cors/cors.go
index 2261df759..cacb34a6c 100644
--- a/vendor/github.com/gin-contrib/cors/cors.go
+++ b/vendor/github.com/gin-contrib/cors/cors.go
@@ -3,6 +3,7 @@ package cors
import (
"errors"
"fmt"
+ "regexp"
"strings"
"time"
@@ -103,8 +104,17 @@ func (c Config) getAllowedSchemas() []string {
return allowedSchemas
}
+var regexpBasedOrigin = regexp.MustCompile(`^\/(.+)\/[gimuy]?$`)
+
func (c Config) validateAllowedSchemas(origin string) bool {
allowedSchemas := c.getAllowedSchemas()
+
+ if regexpBasedOrigin.MatchString(origin) {
+ // Normalize regexp-based origins
+ origin = regexpBasedOrigin.FindStringSubmatch(origin)[1]
+ origin = strings.Replace(origin, "?", "", 1)
+ }
+
for _, schema := range allowedSchemas {
if strings.HasPrefix(origin, schema) {
return true