Header 重写
Chute 可以在请求和响应头部被转发到服务器或客户端之前对其进行重写。
对于单个请求,可以应用多条规则。
示例:
[Header Rewrite]
^http://example\.com.* header-add DNT 1
^http://example\.com.* header-del Cookie
^http://example\.com.* header-replace User-Agent Unknown
^http://example\.com.* header-response-add X-Server rack3
^http://example\.com.* header-response-del X-Powered-By
^http://example\.com.* header-response-replace Server nginx
重写规则由 4 个部分组成:URL 正则表达式、操作类型、头部字段和值。
注意:URL 正则表达式必须匹配完整的请求 URL,而不是其中的一个子串。模式通常应以
.*结尾,以匹配带有任意路径和查询字符串的 URL。
请求与响应头部
前缀为 header- 的操作应用于请求头部(从客户端到服务器)。前缀为 header-response- 的操作应用于响应头部(从服务器到客户端)。
也接受 Surge 风格的方向前缀 http-request / http-response,写在 URL 正则表达式之前,例如 http-request ^http://example\.com.* header-replace Accept-Language en-us。
header-add
将请求头部中的某个头部字段设置为给定的值。如果该头部字段已存在,则会被覆盖。
示例:
[Header Rewrite]
^http://example\.com.* header-add DNT 1
修改前:
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
修改后:
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
DNT: 1
header-del
从请求头部中删除一个头部行。
示例:
[Header Rewrite]
^http://example\.com.* header-del DNT
修改前:
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
DNT: 1
修改后:
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
header-replace
替换请求头部中的头部值。如果该头部字段不存在,则不会发生任何操作。
示例:
[Header Rewrite]
^http://example\.com.* header-replace DNT 1
修改前:
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
DNT: 0
修改后:
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
DNT: 1
注意:
header-replace仅在头部字段已存在时生效。要在无论该字段是否存在的情况下设置头部字段,请使用header-add——它会覆盖任何同名的已有字段,因此无需再组合使用header-del和header-add。
本页为英文版的翻译。如内容有出入,以英文版为准。