Я пытаюсь установить флаг httponly в файле cookie JSESSIONID. Однако я работаю в Java EE 5 и не могу использовать setHttpOnly()
. Сначала я попытался создать свой собственный файл cookie JSESSIONID из сервлета doPost()
, используя response.setHeader()
.
Когда это не сработало, я попробовал response.addHeader()
. Это тоже не сработало. Затем я узнал, что сервлет обрабатывает преобразование сеанса в файл cookie JSESSIONID и вставку его в заголовок http, поэтому, если я захочу поиграть с этим файлом cookie, мне придется написать фильтр. Я написал фильтр и поиграл с setHeader()
/ addHeader()
, опять же безрезультатно.
Затем я узнал, что в объекте ответа происходит некоторое действие сброса / закрытия, прежде чем он попадет в фильтр, поэтому, если я хочу манипулировать данными, мне нужно расширить HttpServletResponseWrapper
и передать его в filterChain.doFilter()
. Это сделано, но я все еще не получаю результаты. Очевидно, что я делаю что-то не так, но я не знаю, что.
Я не уверен, относится ли это вообще к рассматриваемому вопросу, но сервлет не возвращает HTML-документ в браузер. Все, что на самом деле происходит, это то, что некоторые объекты заполняются и возвращаются в документ JSP. Я предположил, что объект Session превращается в файл cookie JSESSIONID и упаковывается вместе с объектами, добавленными в запрос, в заголовок http перед отправкой в браузер.
Я был бы рад опубликовать некоторый код, но я хочу исключить вероятность того, что мои трудности возникнут из-за неправильного понимания теории.