头部修改规则(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": {...}
}
- 追加
(config.core.v3.HeaderValueOption) 通过指定的 HeaderValueOption 追加新的头。