У меня есть следующий простой тестовый код в обработчике http моего сервера:
String cookieString = request.getHeader(COOKIE);
if (cookieString != null) {
CookieDecoder cookieDecoder = new CookieDecoder();
Set<Cookie> cookies = cookieDecoder.decode(cookieString);
if (!cookies.isEmpty()) {
CookieEncoder cookieEncoder = new CookieEncoder(true);
for (Cookie cookie : cookies) {
System.out.println("---> " + cookie);
cookieEncoder.addCookie(cookie);
}
response.addHeader(SET_COOKIE, cookieEncoder.encode());
}
} else {
// set cookie for initial time (just testing)
if (true) {
CookieEncoder cookieEncoder = new CookieEncoder(true);
cookieEncoder.addCookie("key", "value");
cookieEncoder.addCookie("key2", "value2");
response.addHeader(SET_COOKIE, cookieEncoder.encode());
} else {
CookieEncoder cookieEncoder1 = new CookieEncoder(true);
CookieEncoder cookieEncoder2 = new CookieEncoder(true);
cookieEncoder1.addCookie("key", "value");
cookieEncoder2.addCookie("key2", "value2");
response.addHeader(SET_COOKIE, cookieEncoder1.encode());
response.addHeader(SET_COOKIE, cookieEncoder2.encode());
}
}
Как вы видите, в первый раз я пытаюсь установить два фиктивных куки.Когда я обновляю страницу (таким образом, cookie пропускается клиентом) в FF (также происходит в IE и Chrome), в заголовке запроса и выводится только один cookie.
Однако,если я установлю два файла cookie с помощью отдельного CookieEncoder (см. ложное предложение в фрагменте кода выше), все будет работать так, как ожидается.
Это ожидаемое поведение?Я ожидаю, что вы можете установить несколько файлов cookie с помощью одного CookieEncoder?