envoyproxy/envoy

User defined header interpolation inconsistent around empty values

Open

#3.971 geöffnet am 27. Juli 2018

Auf GitHub ansehen
 (6 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C++ (5.373 Forks)batch import
area/docshelp wanted

Repository-Metriken

Stars
 (27.997 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 8T) (378 gemergte PRs in 30 T)

Beschreibung

Title: User defined header interpolation inconsistent around empty values

Description: Envoy's mechanism for configuration specified user-defined headers (https://www.envoyproxy.io/docs/envoy/latest/configuration/http_conn_man/headers#config-http-conn-man-headers-custom-request-headers) is inconsistent in the case of variables that may or may not have a value. This is specifically an issue when using the %UPSTREAM_METADATA(["namespace", "key"])% variable interpolation. If a header is defined as only composed of that value, and the value does not exist, the header is not output. However, if the header is a compound header (e.g. "prefix-%UPSTREAM_METADATA(["namespace", "key"])%-suffix") then the header is output regardless of whether or not the variable interpolation returns any text.

Relevant Links:

Source link to not outputting the header if the value interpolated is empty: https://github.com/envoyproxy/envoy/blob/master/source/common/router/header_parser.cc#L240

Source link to combination of headers which may have null values: https://github.com/envoyproxy/envoy/blob/master/source/common/router/header_formatter.h#L80

Contributor Guide