Перезапись заголовков
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, тип действия, поле заголовка и значение.
Заголовки запросов и ответов
Действия с префиксом header- применяются к заголовкам запросов (от клиента к серверу). Действия с префиксом header-response- применяются к заголовкам ответов (от сервера к клиенту).
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-add и header-del вместе.
[Header Rewrite]
^http://example.com header-del DNT
^http://example.com header-add DNT 1