.. _envoy_v3_api_file_envoy/extensions/filters/http/header_to_metadata/v3/header_to_metadata.proto: Header-To-Metadata Filter (proto) ================================= .. _extension_envoy.filters.http.header_to_metadata: This extension has the qualified name ``envoy.filters.http.header_to_metadata`` .. note:: This extension is intended to be robust against untrusted downstream traffic. It assumes that the upstream is trusted. .. tip:: This extension extends and can be used with the following extension category: - :ref:`envoy.filters.http ` This extension must be configured with one of the following type URLs: - :ref:`type.googleapis.com/envoy.extensions.filters.http.header_to_metadata.v3.Config ` The configuration for transforming headers into metadata. This is useful for matching load balancer subsets, logging, etc. Header to Metadata :ref:`configuration overview `. .. _envoy_v3_api_msg_extensions.filters.http.header_to_metadata.v3.Config: extensions.filters.http.header_to_metadata.v3.Config ---------------------------------------------------- :repo:`[extensions.filters.http.header_to_metadata.v3.Config proto] ` .. code-block:: json :force: { "request_rules": [], "response_rules": [] } .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.request_rules: request_rules (**repeated** :ref:`extensions.filters.http.header_to_metadata.v3.Config.Rule `) The list of rules to apply to requests. .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.response_rules: response_rules (**repeated** :ref:`extensions.filters.http.header_to_metadata.v3.Config.Rule `) The list of rules to apply to responses. .. _envoy_v3_api_msg_extensions.filters.http.header_to_metadata.v3.Config.KeyValuePair: extensions.filters.http.header_to_metadata.v3.Config.KeyValuePair ----------------------------------------------------------------- :repo:`[extensions.filters.http.header_to_metadata.v3.Config.KeyValuePair proto] ` .. code-block:: json :force: { "metadata_namespace": ..., "key": ..., "value": ..., "regex_value_rewrite": {...}, "type": ..., "encode": ... } .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.KeyValuePair.metadata_namespace: metadata_namespace (`string `_) The namespace — if this is empty, the filter's namespace will be used. .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.KeyValuePair.key: key (`string `_, *REQUIRED*) The key to use within the namespace. .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.KeyValuePair.value: value (`string `_) The value to pair with the given key. When used for a :ref:`on_header_present ` case, if value is non-empty it'll be used instead of the header value. If both are empty, no metadata is added. When used for a :ref:`on_header_missing ` case, a non-empty value must be provided otherwise no metadata is added. .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.KeyValuePair.regex_value_rewrite: regex_value_rewrite (:ref:`type.matcher.v3.RegexMatchAndSubstitute `) If present, the header's value will be matched and substituted with this. If there is no match or substitution, the header value is used as-is. This is only used for :ref:`on_header_present `. Note: if the ``value`` field is non-empty this field should be empty. .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.KeyValuePair.type: type (:ref:`extensions.filters.http.header_to_metadata.v3.Config.ValueType `) The value's type — defaults to string. .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.KeyValuePair.encode: encode (:ref:`extensions.filters.http.header_to_metadata.v3.Config.ValueEncode `) How is the value encoded, default is NONE (not encoded). The value will be decoded accordingly before storing to metadata. .. _envoy_v3_api_msg_extensions.filters.http.header_to_metadata.v3.Config.Rule: extensions.filters.http.header_to_metadata.v3.Config.Rule --------------------------------------------------------- :repo:`[extensions.filters.http.header_to_metadata.v3.Config.Rule proto] ` A Rule defines what metadata to apply when a header is present or missing. .. code-block:: json :force: { "header": ..., "cookie": ..., "on_header_present": {...}, "on_header_missing": {...}, "remove": ... } .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.Rule.header: header (`string `_) Specifies that a match will be performed on the value of a header or a cookie. The header to be extracted. .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.Rule.cookie: cookie (`string `_) The cookie to be extracted. .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.Rule.on_header_present: on_header_present (:ref:`extensions.filters.http.header_to_metadata.v3.Config.KeyValuePair `) If the header or cookie is present, apply this metadata KeyValuePair. If the value in the KeyValuePair is non-empty, it'll be used instead of the header or cookie value. .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.Rule.on_header_missing: on_header_missing (:ref:`extensions.filters.http.header_to_metadata.v3.Config.KeyValuePair `) If the header or cookie is not present, apply this metadata KeyValuePair. The value in the KeyValuePair must be set, since it'll be used in lieu of the missing header or cookie value. .. _envoy_v3_api_field_extensions.filters.http.header_to_metadata.v3.Config.Rule.remove: remove (`bool `_) Whether or not to remove the header after a rule is applied. This prevents headers from leaking. This field is not supported in case of a cookie. .. _envoy_v3_api_enum_extensions.filters.http.header_to_metadata.v3.Config.ValueType: Enum extensions.filters.http.header_to_metadata.v3.Config.ValueType ------------------------------------------------------------------- :repo:`[extensions.filters.http.header_to_metadata.v3.Config.ValueType proto] ` .. _envoy_v3_api_enum_value_extensions.filters.http.header_to_metadata.v3.Config.ValueType.STRING: STRING *(DEFAULT)* ⁣ .. _envoy_v3_api_enum_value_extensions.filters.http.header_to_metadata.v3.Config.ValueType.NUMBER: NUMBER ⁣ .. _envoy_v3_api_enum_value_extensions.filters.http.header_to_metadata.v3.Config.ValueType.PROTOBUF_VALUE: PROTOBUF_VALUE ⁣The value is a serialized `protobuf.Value `_. .. _envoy_v3_api_enum_extensions.filters.http.header_to_metadata.v3.Config.ValueEncode: Enum extensions.filters.http.header_to_metadata.v3.Config.ValueEncode --------------------------------------------------------------------- :repo:`[extensions.filters.http.header_to_metadata.v3.Config.ValueEncode proto] ` ValueEncode defines the encoding algorithm. .. _envoy_v3_api_enum_value_extensions.filters.http.header_to_metadata.v3.Config.ValueEncode.NONE: NONE *(DEFAULT)* ⁣The value is not encoded. .. _envoy_v3_api_enum_value_extensions.filters.http.header_to_metadata.v3.Config.ValueEncode.BASE64: BASE64 ⁣The value is encoded in `Base64 `_. Note: this is mostly used for STRING and PROTOBUF_VALUE to escape the non-ASCII characters in the header.