Как добавить идентификатор Jsession в журнал доступа HTTP Apache - PullRequest
6 голосов
/ 30 мая 2011

Я должен сделать журналы доступа для своего веб-приложения. Мы используем http-сервер appache перед jboss. Я использую для этого директиву журнала доступа apache, но проблема в том, что в журнале доступа нет директивы для получения sessionid. мне нужен sessionid в журналах доступа для статистики report.pls, кто-нибудь, имеющий решение, поможет мне.

Ответы [ 2 ]

11 голосов
/ 28 октября 2011

Если ваше веб-приложение всегда использует файлы cookie для управления сеансами, вы можете изменить LogFormat и добавить параметр для регистрации определенного файла cookie:

LogFormat ... \"%{JSESSIONID}C\" ... combined

Это не работает при первом запросе, так как обычно на сервер не отправляются файлы cookie. Увидеть: http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats:

% {Foobar} С

Содержимое куки Foobar в запросе отправляется на сервер. Полностью поддерживаются только файлы cookie версии 0.

Если вам нужно регистрировать каждый jsessionid, так что даже те, которые закодированы в строке url, вы можете установить заголовок на вашем сервере веб-приложений (например, tomcat) следующим образом:

response.setHeader("X-JSESSIONID", request.getSession().getId());

в формате журнала Apache вы можете войти в этот RepsonseHeader с помощью

% {Foobar} о * ** 1026 тысяча двадцать пять *

Содержимое Foobar: строки заголовка в ответе.

так что получается примерно так:

LogFormat ... \"%{X-JSESSIONID}o\" ... combined

Но следите за Безопасность : Вы не должны регистрировать jsessionid, потому что каждый, кто имеет доступ к файлу журнала, может перехватить каждый пользовательский сеанс. Когда вы устанавливаете строку заголовка в своем коте, вы, возможно, должны зашифровать sessionid.

String sessionId = request.getSession().getId();
String crypt = yourcryptalgo(sessionId);
response.setHeader("X-JSESSIONID", crypt);
1 голос
/ 30 мая 2011

включить% {JSESSIONID} C в директиву LogFormat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...