#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.