標頭變更規則 (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": {...}
}
remove

(string) 如果存在,則移除指定的標頭。

必須設定 removeappend 其中之一。

append

(config.core.v3.HeaderValueOption) 透過指定的 HeaderValueOption 附加新的標頭。

必須設定 removeappend 其中之一。