標頭變更規則 (proto)
config.common.mutation_rules.v3.HeaderMutationRules
[config.common.mutation_rules.v3.HeaderMutationRules proto]
HeaderMutationRules 結構指定處理篩選器可以操作哪些標頭。這組規則可以控制篩選器可以進行哪些修改。
預設情況下,外部處理伺服器可以新增、修改或移除任何標頭,除了「Envoy 內部」標頭(通常以 x-envoy 前綴表示)或可能影響進一步篩選器處理的特定標頭之外
host
:authority
:scheme
:method
每次嘗試新增、變更、附加或移除標頭時,都會根據此處的規則進行測試。除非 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": {...}
}
- allow_all_routing
(BoolValue) 預設情況下,某些可能會影響後續篩選器或請求路由處理的標頭無法修改。這些標頭是
host
、:authority
、:scheme
和:method
。將此參數設定為 true 允許修改這些標頭。
- allow_envoy
(BoolValue) 如果為 true,則允許修改 Envoy 內部標頭。預設情況下,這些標頭以
x-envoy
開頭,但可以使用 header_prefix 欄位在Bootstrap
組態中覆寫。預設為 false。
- disallow_system
(BoolValue) 如果為 true,則防止修改任何系統標頭,定義為以
:
字元開頭的標頭,無論任何其他設定。處理伺服器仍可以使用ImmediateResponse
訊息覆寫 HTTP 回應的:status
。預設為 false。
- disallow_all
(BoolValue) 如果為 true,則防止修改所有標頭值,無論任何其他設定。處理伺服器仍可以使用
ImmediateResponse
訊息覆寫 HTTP 回應的:status
。預設為 false。
- allow_expression
(type.matcher.v3.RegexMatcher) 如果設定,則明確允許任何符合此正規表示式的標頭。這會覆寫所有其他設定,除了
disallow_expression
之外。
- disallow_expression
(type.matcher.v3.RegexMatcher) 如果設定,則明確禁止任何符合此正規表示式的標頭,無論任何其他設定。
- disallow_is_error
(BoolValue) 如果為 true,且此清單中的規則導致不允許標頭變更,則使用此組態的篩選器將終止請求並返回 500 錯誤。此外,無論此參數的設定為何,任何嘗試設定、新增或修改不允許的標頭都會導致
rejected_header_mutations
計數器遞增。預設為 false。
config.common.mutation_rules.v3.HeaderMutation
[config.common.mutation_rules.v3.HeaderMutation proto]
HeaderMutation 結構指定可以對 HTTP 標頭採取的動作。
{
"remove": ...,
"append": {...}
}
- append
(config.core.v3.HeaderValueOption) 透過指定的 HeaderValueOption 附加新的標頭。