Пользовательский заголовок не вставлен в запрос в сервлете

Существует стороннее приложение, которому необходимо получать информацию через пользовательские заголовки http, поэтому я написал простое тестовое приложение, которое создает эти заголовки и затем перенаправляет их на страницу со списком всех заголовков.

Фрагмент сервлета, генерирующего заголовок:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/plain");
    response.setHeader("cust-header", "cust-val");
    response.sendRedirect("header.jsp");
}

С другой стороны, соответствующий код из header.jsp:

<%
    Enumeration enumeration = request.getHeaderNames();
    while (enumeration.hasMoreElements()) {
    String string = (String)enumeration.nextElement();
    out.println("<font size = 6>" +string +": " + request.getHeader(string)+ "</font><br>");
    }
    %>

Это отображает следующие заголовки:

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

Как будто пользовательский заголовок никогда не вставлялся. Как я могу это исправить?

Спасибо

Ответы на вопрос(1)

Решение Вопроса

Спереадресовывать вы в основном указываете клиенту (веб-браузеру) запустить новый HTTP-запрос. Новый запрос также означает новый ответ. Заменить его навперед:

request.getRequestDispatcher("header.jsp").forward(request, response);

Или, если вы действительно хотите, чтобы он был в перенаправленном запросе, то создайтеFilter который отображается на/header.jsp и изменяет заголовок соответственно.

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
    ((HttpServletResponse) response).setHeader("foo", "bar");
    chain.doFilter(request, response);
}

Также обратите внимание, что вы отображаетезапрос Заголовки вheader.jsp вместоответ заголовки. Поскольку нет прямого API, доступного для отображения заголовков ответов, вы хотели бы исследовать их с помощью инструмента анализа внешнего HTTP-заголовка, такого какподжигатель (Сеть панель) илиобманщик.

 BalusC21 сент. 2010 г., 20:52
Вы перечисляетеrequest заголовки вместоresponse заголовки. Я бы предложил использовать Firebug, чтобы проверить их.
 xain21 сент. 2010 г., 20:49
Спасибо за ваш ответ; Я изменил код на: response.setContentType ("text / html; charset = UTF-8"); response.setHeader ("cust-header", "cust-val"); request.getRequestDispatcher ("header.jsp"). forward (запрос, ответ); Но все же пользовательский заголовок не указан в заголовках.

Ваш ответ на вопрос