头部修改规则(proto)

config.common.mutation_rules.v3.HeaderMutationRules

[config.common.mutation_rules.v3.HeaderMutationRules proto]

HeaderMutationRules 结构指定处理过滤器可以操作哪些头。这组规则使控制过滤器可以进行哪些修改成为可能。

默认情况下,外部处理服务器可以添加、修改或删除任何头,除了“Envoy 内部”头(通常用 x-envoy 前缀表示)或可能影响进一步过滤器处理的特定头。

  • 主机

  • :权威

  • :方案

  • :方法

将针对此处的规则测试每次添加、更改、追加或删除头的尝试。除非 disallow_is_error 设置为 true,否则不允许的头部修改将被忽略。

删除头的尝试受到进一步约束——无论设置如何,系统定义的头(以 : 开头)和 host 头永远不能被删除。

此外,每当修改被拒绝时,都会增加一个计数器。在 ext_proc 过滤器中,该计数器名为 rejected_header_mutations

{
  "allow_all_routing": {...},
  "allow_envoy": {...},
  "disallow_system": {...},
  "disallow_all": {...},
  "allow_expression": {...},
  "disallow_expression": {...},
  "disallow_is_error": {...}
}
允许所有路由

(BoolValue) 默认情况下,某些可能影响后续过滤器或请求路由处理的头不能被修改。这些头是 host:authority:scheme:method。将此参数设置为 true 允许这些头被修改。

允许 envoy

(BoolValue) 如果为 true,则允许修改 envoy 内部头。默认情况下,这些头以 x-envoy 开头,但可以在 Bootstrap 配置中使用 header_prefix 字段进行覆盖。默认值为 false。

不允许系统

(BoolValue) 如果为 true,则无论任何其他设置如何,都阻止修改任何系统头,定义为以 : 字符开头的头。处理服务器仍然可以使用 ImmediateResponse 消息覆盖 HTTP 响应的 :status。默认值为 false。

不允许所有

(BoolValue) 如果为 true,则无论任何其他设置如何,都阻止修改所有头值。处理服务器仍然可以使用 ImmediateResponse 消息覆盖 HTTP 响应的 :status。默认值为 false。

允许表达式

(type.matcher.v3.RegexMatcher) 如果设置,则专门允许与该正则表达式匹配的任何头。这会覆盖所有其他设置,除了 disallow_expression

不允许表达式

(type.matcher.v3.RegexMatcher) 如果设置,则无论任何其他设置如何,都专门不允许与该正则表达式匹配的任何头。

不允许是错误

(BoolValue) 如果为 true,并且如果此列表中的规则导致头部修改被拒绝,那么使用此配置的过滤器将使用 500 错误终止请求。此外,无论此参数的设置如何,任何设置、添加或修改不允许的头的尝试都会导致 rejected_header_mutations 计数器增加。默认值为 false。

config.common.mutation_rules.v3.HeaderMutation

[config.common.mutation_rules.v3.HeaderMutation proto]

HeaderMutation 结构指定可以对 HTTP 头执行的操作。

{
  "remove": ...,
  "append": {...}
}
删除

(string) 如果存在,则删除指定的头。

必须设置 removeappend 中的准确一个。

追加

(config.core.v3.HeaderValueOption) 通过指定的 HeaderValueOption 追加新的头。

必须设置 removeappend 中的准确一个。