Próbuję ustawić flagę httponly na pliku cookie JSESSIONID. Pracuję jednak w Java EE 5 i nie mogę używać setHttpOnly()
. Najpierw próbowałem utworzyć własny plik cookie JSESSIONID z poziomu doPost()
serwletu za pomocą response.setHeader()
.Ustawienie httponly w pliku cookie JSESSIONID (Java EE 5)
Kiedy to nie zadziałało, próbowałem response.addHeader()
. To też nie działa. Potem dowiedziałem się, że serwlet wykonał konwersję sesji na plik cookie JSESSIONID i wstawił go do nagłówka http, więc jeśli chcę grać z tym plikiem cookie, będę musiał napisać filtr. Napisałem filtr i grałem tam z setHeader()
/addHeader()
, znowu bez skutku.
Następnie dowiedziałem się, że w obiekcie odpowiedzi jest wykonywana operacja przepłukiwania/zamykania, zanim dotrze ona do filtra, więc jeśli chcę manipulować danymi, muszę przedłużyć HttpServletResponseWrapper
i przekazać to do filterChain.doFilter()
. Odbywa się to, ale nadal nie osiągam wyników. Najwyraźniej robię coś złego, ale nie wiem co.
Nie jestem pewien, czy jest to w ogóle istotne dla danego pytania, ale żaden aplet HTML nie jest zwracany przez serwlet do przeglądarki. Wszystko, co się naprawdę dzieje, to to, że niektóre obiekty są zapełniane i zwracane do dokumentu JSP. W pewnym sensie założyłem, że obiekt Sesji jest przekształcany w plik cookie JSESSIONID i zawijany - wraz z obiektami dodanymi do żądania - w nagłówku http przed wysłaniem do przeglądarki.
Z przyjemnością opublikuję kod, ale chcę wykluczyć, że moje trudności wynikają z niezrozumienia teorii.
dodano kilka kod formatowania ponieważ othe rwise to było trochę niedostępne Wall Of Text. Może nadal rozważać opublikowanie przykładowego kodu, którego próbujesz. –