envoyproxy / envoyproxy/envoy

feature request: header-matcher allow ignore case

Open
#12,056 2 comments 0 reactions 0 assignees View on GitHub
area/configuration area/http enhancement help wanted
Dominant language
C++
Stars
28.9k
Forks
5.6k
Avg merge
1d 20h
Merged PRs (30d)
437

Description

Envoy normalizes header keys, but not their values for good reason. We use a combination of the `:authority` header as well as the request path for H1/2 service routing. We have multiple services tied to a single filter chain and virtual host.

excerpt...
```
"routes": [{
"match": {
"headers": [{
"exactMatch": "myservice.mydomain.com",
"name": ":authority"
}],
"prefix": "/servce/path"
},
"route": {
"cluster": "mycluster",
}
}]
}
```

However, if there's a discrepancy in the header sent by the client, where for example they use an uppercase letter, then our route matching will not work; `:authority` = `MYservice.MYdomain.com`

As I see it, there are at least two options:

1. add a flag to ignore the case for the header matchers; note that we already have the [ignore case](https://www.envoyproxy.io/docs/envoy/latest/api-v2/type/matcher/string.proto) flag for the string matchers.
2. ability to normalize some headers values

We could of course have a workaround using a regex, but the performance implications don't make it a viable option.

similar issues
- https://github.com/envoyproxy/envoy/pull/2439

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.