envoyproxy/envoy

feature request: header-matcher allow ignore case

Open

#12.056 aberto em 13 de jul. de 2020

Ver no GitHub
 (2 comments) (0 reactions) (0 assignees)C++ (5.373 forks)batch import
area/configurationarea/httpenhancementhelp wanted

Métricas do repositório

Stars
 (27.997 stars)
Métricas de merge de PR
 (Mesclagem média 8d) (378 fundiu PRs em 30d)

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 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

Guia do colaborador