Назад | Перейти на главную страницу

Просмотр заголовков HTML-запросов к apache

Есть ли хороший способ просмотреть подробную версию входящих запросов к apache? Как минимум я хотел бы проверить наличие определенного заголовка и проверить его значение. Запросы поступают не из браузера, поэтому их сложно просмотреть. Я не уверен, что мой собственный HTTP-заголовок действительно добавляется клиентом, поэтому отладка моей директивы rewritecond затруднена.

Вы можете создать собственный LogFormat, содержащий заголовки:

% {Foobar} i: содержимое строки (строк) заголовка Foobar: в запросе, отправленном на сервер. На это влияют изменения, внесенные другими модулями (например, mod_headers). Если вас интересует, каким был заголовок запроса до того, когда большинство модулей изменили бы его, используйте mod_setenvif, чтобы скопировать заголовок во внутреннюю переменную среды и записать это значение с помощью% {VARNAME} e, описанного выше.

Затем повторно используйте это LogFormat в вашей директиве AccessLog

LogFormat "%v %h %l %u %t \"%r\" %>s %b %{MySpecialHeader}i " my_special_format
CustomLog logs/access_log_with_details my_special_format

Или даже в одной строке:

CustomLog logs/access_log_with_details "%v %h %l %u %t \"%r\" %>s %b %{MySpecialHeader}i"

ОБНОВИТЬ:

Заметка о SetEnvIf:

Эта часть предназначена для хранения значения заголовка в начале любой внутренней перезаписи, а затем вместо использования %{FOO}i синтаксис для извлечения заголовка в конце процесса, вы должны использовать %{MyEnvVar}e это синтаксис для регистрации переменной среды, чтобы записать значение, зарезервированное в начале.

Итак, закончим примерно так:

SetEnvIf MySpecialHeader "(.*)" BACKUPHEADER=$1
(... stuff and things ...)
CustomLog logs/access_log_with_details "init: %{BACKUPHEADER}e final: %{MySpecialHeader}i "

Вы также можете сделать это с помощью mod_security:

http://static.askapache.com/httpd/mod_security/doc/modsecurity-manual.html#N107EE

LogFormat "%h %l %u %t \"%r\" %>s %{mod_security-body}n