У меня проблема с правильной настройкой данных cookie-файла (постоянный / межсервисный сеанс) внутри сервлета и чтения его в фильтре.
код сервлета (работает в журналепо времени):
String encodedValue = new String(Base64
.encodeBase64(req.getParameter("account").getBytes()));
Cookie cookie = new Cookie("projectAuthenticationCookie", encodedValue );
cookie.setMaxAge(24*60*60);
cookie.setPath("/");
res.addCookie(cookie);
Это позволит получить cookie в ответе, но когда я прочитал его в своем фильтре со следующим кодом:
Cookie authenticationCookie = null;
Cookie[] cookies = ((HttpServletRequest) request).getCookies();
for (Cookie cookie : cookies){
if ("projectAuthenticationCookie".equals(cookie.getName())) {
authenticationCookie = cookie;
}
}
Я получу толькоЗначение, которое я установил правильно, все остальные поля либо нулевые, либо пустые, либо разные.Например, максимальный возраст всегда возвращает -1, и, следовательно, файл cookie не будет сохраняться.
Я попытался установить заголовок expires с помощью:
res.setDateHeader("Expires", System.currentTimeMillis() + 24*60*60*1000);
какЯ прочитал, что без действительного заголовка expires сеанс все равно прекратится (исправьте меня, если я ошибаюсь), но это тоже не помогло ...
Одна проблема, о которой я думаю, это то, что я бегуна локальном хосте (попытался установить cookie.setDomain ("localhost"), но тоже не повезло).Мой контейнер веб-сервера / serclet - Jetty 7, но я не думаю, что это актуально ...
Есть какие-нибудь подсказки?