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