Невозможно установить заголовок в JSP. Ответ уже принят - PullRequest
10 голосов
/ 08 января 2010

WebSphere регистрирует предупреждающее сообщение «SRTServletRes W WARNING: Невозможно установить заголовок. Ответ уже принят »для одного запроса JSP. Мне понадобятся заголовки респонента позже в моем коде. Я провел небольшое исследование и понял, что сервлет пытается отправить больше данных в выходной поток, но поток уже зафиксирован. Я не понял, почему это происходит только с этим конкретным JSP, так как этот код сервлета отлично работает для других JSP. Эта страница не перенаправлена, и я получаю ответ без заголовков ответа.

1 Ответ

24 голосов
/ 09 января 2010

Когда ответ зафиксирован, это означает, что по крайней мере заголовки уже отправлены на клиентскую сторону. Вы не можете устанавливать / изменять заголовки, когда ответ уже зафиксирован, потому что уже слишком поздно.

Ответ будет принят при выполнении одного или нескольких из следующих условий:

  • HttpServletResponse#sendRedirect() был вызван.
  • Более 2К уже записано в ответный вывод сервлетом или JSP.
  • Записано больше 0K, но меньше 2K и flush() было вызвано в поток вывода ответа сервлетом или JSP.

Предел буфера 2K настраивается в конфигурации сервера приложений.

Вам необходимо изменить кодовую логику так, чтобы она устанавливала только заголовки до ответа. Вы должны никогда устанавливать / изменять заголовки ответа, используя скриптлетов внутри / на полпути JSP. Это следует делать только в Filter перед продолжением цепочки или в контроллере страниц Servlet перед отправкой запроса. Также убедитесь, что ни один из них не был вызван включаемым файлом JSP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...