title: Custom headers in request with HttpServletRequestWrapper don't appear in client side
body: <p>I want add a custom header into Servlet request.</p>
  
  <p>At first, I have built a <code>HttpServletRequestWrapper</code> class</p>
  
  <pre><code>public class HeaderRequest_DEBUG extends HttpServletRequestWrapper {
  
      private static final String DEBUG_NAME="Authorization";
      private static final String DEBUG_VALUE="foccalabindella";
  
      public HeaderRequest_DEBUG(HttpServletRequest request) {
          super(request);
      }
  
      @Override
      public String getHeader(String name) {
          if(name.equalsIgnoreCase(HeaderRequest_DEBUG.DEBUG_NAME)){
              return HeaderRequest_DEBUG.DEBUG_VALUE;
          }
          return super.getHeader(name);
      }
  
  
      @Override
      public Enumeration getHeaderNames() {
          //create an enumeration of the request headers
  
          //create a list
          List list = new ArrayList();
  
          //loop over request headers from wrapped request object
          HttpServletRequest request = (HttpServletRequest)getRequest();
          Enumeration e = request.getHeaderNames();
          while(e.hasMoreElements()) {
              //add the names of the request headers into the list
              String n = (String)e.nextElement();
              list.add(n);
          }
  
          list.add(HeaderRequest_DEBUG.DEBUG_NAME);
  
          //create an enumeration from the list and return
          Enumeration en = Collections.enumeration(list);
          return en;
      }
  
  }
  </code></pre>
  
  <p>So, I've built a <code>Fileter</code> to wrap the standard request:</p>
  
  <pre><code>public class Filter_DEBUG implements Filter{
  
  
      @Override public void init(FilterConfig config) throws ServletException {}
      @Override public void destroy() {}
  
      @Override
      public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  
          //if the ServletRequest is an instance of HttpServletRequest
          if(servletRequest instanceof HttpServletRequest) {
              //cast the object
              HttpServletRequest httpServletRequest = (HttpServletRequest)servletRequest;
              //create the FakeHeadersRequest object to wrap the HttpServletRequest
              HeaderRequest_DEBUG request = new HeaderRequest_DEBUG(httpServletRequest);
              //continue on in the filter chain with the FakeHeaderRequest and ServletResponse objects
              filterChain.doFilter(request, servletResponse);
          } else {
              //otherwise, continue on in the chain with the ServletRequest and ServletResponse objects
              filterChain.doFilter(servletRequest, servletResponse);
          }      
      }
  }
  </code></pre>
  
  <p>At last, I've built a page for test:</p>
  
  <pre><code>&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%&gt;
  &lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
  &lt;html&gt;
      &lt;head&gt;
  
      &lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;
      &lt;title&gt;Initial page&lt;/title&gt;
      &lt;/head&gt;
      &lt;body&gt;
           header: &lt;%=request.getHeader("Authorization")%&gt;
      &lt;/body&gt;
  &lt;/html&gt;
  </code></pre>
  
  <p>So, with Firefox/Firebug I have this situation: in the browser window I have this message:</p>
  
  <pre><code>header: foccalabindella
  </code></pre>
  
  <p>But in Firebug I didn't see that header:</p>
  
  <pre><code>GET /myServer/jsp/welcome.jsp HTTP/1.1
  Host: localhost:8080
  User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3
  Accept-Encoding: gzip, deflate
  Cookie: JSESSIONID=465C24CC9A113E270F72829E35155BBB
  Connection: keep-alive 
  </code></pre>
  
  <p>To confirm this, if I add a submit button and I read request in a servlet, I haven't that header</p>