Возможно ли восстановить ссылку в функции doFilter фильтра в tomcat?

#java #tomcat

#java #tomcat

Вопрос:

У меня есть фильтр для отображения заголовков http-запроса:

 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;

        Enumeration headers = req.getHeaderNames();
        for (; headers.hasMoreElements(); ) {

            String name = (String) headers.nextElement();
            String value = req.getHeader(name);
            LOGGER.info("- "   name   " = "   value);
        }

        chain.doFilter(request, response);
    }
  

Используя firebug, я могу видеть следующие заголовки запроса:

 Host    mydomain.com
User-Agent  Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20100101 Firefox/4.0
Accept  text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip, deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Referer http://mydomain.com/test/index.html
  

Но фильтр показывает мне только это:

 16:39:49,064  INFO RefererFilter:42 - - user-agent = Java/1.5.0_22
16:39:49,064  INFO RefererFilter:42 - - host = mydomain.com
16:39:49,064  INFO RefererFilter:42 - - accept = text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
16:39:49,064  INFO RefererFilter:42 - - connection = keep-alive
16:39:49,064  INFO RefererFilter:42 - - content-length = 0
  

Мне нужно посмотреть заголовок ссылки, но я не знаю, почему фильтр не отображается. «Я делаю что-то не так?

Комментарии:

1. как вы это тестируете? Странно, что все ваши заголовки отображаются в нижнем регистре.

Ответ №1:

Это может произойти, если Tomcat помещен за прокси, который проглатывает этот заголовок. Эта проблема неразрешима со стороны Java / Tomcat. Вам нужно решить это на стороне прокси.

user-agent = Java/1.5.0_22 Кстати, подозрительно. Это доморощенный прокси / клиент, который использует java.net.URLConnection или что-то в этом роде?

Комментарии:

1. Все в том же tomcat и у нас нет прокси. Я использую tomcat 5.5 и java 1.5.0_22

2. Технически возможно иметь прокси-фильтр, который отображается на /* . Заголовки, которые вы извлекли, предполагают, что вы использовали URLConnection для отправки запросов вместо обычного веб-браузера.

3. Запрос, который я делаю для Ajax через библиотеку javascript под названием OpenLayers.