如何配置EnvoyProxy不覆盖已存在的Cookie及自定义请求头?
一、自定义请求头仅在不存在时添加(不覆盖)
在Envoy的HTTP路由或过滤器配置中,使用request_headers_to_add字段时,通过指定header_action为SET_IF_NOT_PRESENT,即可实现仅当目标请求头不存在时才添加,已存在则保留原数值。示例配置片段如下:
routes: - match: prefix: "/" route: cluster: your_service_cluster request_headers_to_add: - header: key: "X-Custom-Header" value: "default-value" header_action: SET_IF_NOT_PRESENT
SET_IF_NOT_PRESENT动作会自动检查请求中是否已存在目标请求头:存在则跳过添加逻辑,不存在则设置为指定值。
二、确保不覆盖已存在的Cookie
Cookie属于单头多值的特殊请求头,处理逻辑与普通请求头一致:如果你的Envoy配置中有添加Cookie的操作,同样使用SET_IF_NOT_PRESENT动作避免覆盖已存在的Cookie;若要阻止Envoy修改现有Cookie,需检查是否有过滤器(如envoy.filters.http.cookie_to_metadata)或路由配置中存在修改Cookie的规则,将相关操作的动作改为SET_IF_NOT_PRESENT,或移除不必要的Cookie修改配置。
示例Cookie配置:
request_headers_to_add: - header: key: "Cookie" value: "session-id=default-sid" header_action: SET_IF_NOT_PRESENT
该配置仅在请求无Cookie头时添加指定内容,若已有Cookie头则完全保留原内容,不会覆盖或追加。
内容的提问来源于stack exchange,提问作者Zvi Rosenfeld
相关产品推荐
相关产品推荐

