You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Istio Sidecar中配置过滤器以允许重复请求头

解决Istio Sidecar过滤重复请求头的问题

你的问题出在EnvoyFilter的配置层级错误:http_protocol_options是HttpConnectionManager(网络过滤器)的直接配置项,而你当前的配置试图将其合并到HTTP_FILTER层级,导致配置没有被正确应用到Envoy的核心连接管理模块中。

修正后的EnvoyFilter配置(仅允许重复Authorization头)

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: auth-header-filter
spec:
  workloadSelector:
    labels:
      app: received_pod_name
  configPatches:
  - applyTo: NETWORK_FILTER
    match:
      context: SIDECAR_INBOUND
      listener:
        filterChain:
          filter:
            name: "envoy.filters.network.http_connection_manager"
            subFilter:
              name: "envoy.filters.http.router"
    patch:
      operation: MERGE
      value:
        typed_config:
          "@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
          http_protocol_options:
            allow_duplicate_authorization_header: true

如果需要允许其他重复请求头

若要放行Authorization之外的重复头(比如自定义的X-Custom-Header),需改用allow_duplicate_headers列表配置:

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: allow-duplicate-headers
spec:
  workloadSelector:
    labels:
      app: received_pod_name
  configPatches:
  - applyTo: NETWORK_FILTER
    match:
      context: SIDECAR_INBOUND
      listener:
        filterChain:
          filter:
            name: "envoy.filters.network.http_connection_manager"
            subFilter:
              name: "envoy.filters.http.router"
    patch:
      operation: MERGE
      value:
        typed_config:
          "@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
          http_protocol_options:
            allow_duplicate_headers:
            - "Authorization"
            - "X-Custom-Header"

验证配置生效方法

  1. 应用EnvoyFilter后,重启目标Pod(或等待Istio自动推送配置)
  2. 发送带重复头的请求测试:
    curl -H "Authorization: token1" -H "Authorization: token2" http://<目标Pod服务地址>
    
  3. 检查目标Pod的Envoy配置,确认参数已生效:
    istioctl pc <目标Pod名称> all -o yaml | grep -A5 http_protocol_options
    

内容的提问来源于stack exchange,提问作者Peter Penzov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 11:40:59