There's a thrird party app that needs to get information via custom http headers, so I wrote a simple test app that creates this headers and then redirects to a page that lists all headers.
The header-generating servlet snippet is:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/plain");
response.setHeader("cust-header", "cust-val");
response.sendRedirect("header.jsp");
}
On the other hand, the relevant code from header.jsp is:
<%
Enumeration enumeration = request.getHeaderNames();
while (enumeration.hasMoreElements()) {
String string = (String)enumeration.nextElement();
out.println("<font size = 6>" +string +": " + request.getHeader(string)+ "</font><br>");
}
%>
That displays the following headers:
Host: localhost:9082
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 (.NET CLR 3.5.30729)
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://localhost:9082/HdrTest/login.jsp
Cookie: JSESSIONID=0000tubMmZOXDyuM4X9RmaYYTg4:-1
As if the custom header was never inserted. How can I fix it ?
Thanks
With a redirect you're basically instructing the client (the webbrowser) to fire a brand new HTTP request. A brand new request also means a brand new response. Replace it by a forward:
request.getRequestDispatcher("header.jsp").forward(request, response);
Or if you actually want to have it on the redirected request, then create a Filter
which is mapped on /header.jsp
and modifies the header accordingly.
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
((HttpServletResponse) response).setHeader("foo", "bar");
chain.doFilter(request, response);
}
Also note that you're displaying the request headers in the header.jsp
instead of response headers. Since there's no direct API avaliable to display the response headers, you'd like to investigate them using an external HTTP header sniffing tool like Firebug (the Net panel) or Fiddler.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With