diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/caddyhttp/matchers.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/modules/caddyhttp/matchers.go b/modules/caddyhttp/matchers.go index bddb214..508f78f 100644 --- a/modules/caddyhttp/matchers.go +++ b/modules/caddyhttp/matchers.go @@ -300,8 +300,17 @@ func (m MatchHeader) Match(r *http.Request) bool { fieldVals: for _, actualFieldVal := range actualFieldVals { for _, allowedFieldVal := range allowedFieldVals { - if actualFieldVal == allowedFieldVal { - match = true + switch { + case strings.HasPrefix(allowedFieldVal, "*") && strings.HasSuffix(allowedFieldVal, "*"): + match = strings.Contains(actualFieldVal, allowedFieldVal[1:len(allowedFieldVal)-1]) + case strings.HasPrefix(allowedFieldVal, "*"): + match = strings.HasSuffix(actualFieldVal, allowedFieldVal[1:]) + case strings.HasSuffix(allowedFieldVal, "*"): + match = strings.HasPrefix(actualFieldVal, allowedFieldVal[:len(allowedFieldVal)-1]) + default: + match = actualFieldVal == allowedFieldVal + } + if match { break fieldVals } } |