Skip to content

[Header Rewrite] 请求头重写 ​

本节用于在 HTTP 请求发往上游前修改请求头,支持添加、删除、覆盖及正则替换操作。

HTTPS 流量需先在 MITM 中配置解密后方可读取和修改请求头。

语法声明 ​

本章节每行定义一条请求头重写规则,参数之间以空格分隔:

ini
[Header Rewrite]
http-request pattern action header_name [arguments...]

行内结构拆解如下:

  • http-request:触发阶段标识,指定规则作用于客户端请求阶段。
  • pattern:正则表达式,匹配请求的完整 URL。
  • action:首部操作指令,指定对目标字段执行的具体处理动作。
  • header_name:目标 HTTP 首部字段名称,匹配时不区分 ASCII 大小写。
  • [arguments...]:操作指令所需的具体参数(如新的字段取值,或正则表达式及其替换内容)。

操作指令与参数 ​

  • header-add / add(参数:<value>) 向请求头中追加指定字段与取值。若请求中已存在同名字段,系统保留原始字段并追加该新值。
  • header-del / del / delete(无附加参数) 移除请求头中与 header_name 匹配的所有字段。
  • header-replace / replace(参数:<value>) 将请求头中已有字段的取值整体覆盖为 <value>。若请求头中不存在该字段,系统保持原样,不新增字段。
  • header-replace-regex / replace-regex(参数:<regex> <replacement>) 对请求头中已有字段的取值执行正则表达式匹配与替换。若请求头中不存在该字段,系统保持原样。

处理机制与约束 ​

  1. Host 字段约束:Host 头由请求 URL 决定,无法通过本节直接修改。修改目标主机需使用 URL Rewrite。
  2. 规则执行顺序:多条规则按书写顺序自上而下串行应用。后置规则在前置规则修改后的请求头基础上继续处理。
  3. 管线协同:请求头重写发生在 URL Rewrite 之后、请求分流与建立外部连接之前。

配置示例 ​

基础配置 ​

ini
[Header Rewrite]
# 移除指定域名的 Cookie 请求头
http-request ^https?://tracking\.example\.com/ header-del Cookie

# 替换客户端 User-Agent 标识
http-request ^https?://.*\.example\.com/ header-replace User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36

# 添加 Authorization 头
http-request ^https?://api\.internal\.example\.com/ header-add Authorization Bearer <TOKEN>

# 正则替换 Referer 头
http-request ^https?://.*\.example\.com/api/ header-replace-regex Referer https?://[^/]+/ https://example.com/