Java 是否可以恢复tomcat中过滤器的doFilter函数中的referer?

Java 是否可以恢复tomcat中过滤器的doFilter函数中的referer?,java,tomcat,Java,Tomcat,我有一个过滤器来显示http请求头: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; Enumeration headers = req.get

我有一个过滤器来显示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);
    }
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
使用firebug,我可以看到以下请求头:

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);
    }
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

我需要查看referer标题,但我不知道为什么过滤器不显示。我做错了什么?

如果Tomcat被放在一个代理后面,这个代理会吞下这个头,那么就会发生这种情况。从Java/Tomcat的角度来看,这个问题是无法解决的。您需要在代理端解决它


顺便说一句,user agent=Java/1.5.0_22是可疑的。它是一个利用java.net.URLConnection或其他东西的自制代理/客户端吗?

都在同一个tomcat中,我们没有代理。我使用的是tomcat 5.5和java 1.5.0ã22从技术上讲,可以在/*上映射一个代理过滤器。您检索到的标题表明您使用URLConnection发送请求,而不是普通的webbrowser。我通过名为OpenLayers的javascript库为Ajax发送请求。您如何测试这一点?奇怪的是,你的标题都是小写的。