Browse Source
http: header matcher supports fast prefix and suffix matching (#2888)
master
Matthew Holt
6 years ago
No known key found for this signature in database
GPG Key ID: 2A349DD577D586A5
1 changed files with
11 additions and
2 deletions
-
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 |
|
|
|
} |
|
|
|
} |
|
|
|