Как удалить куки в сервлете Java?
Я попробовал это: http://www.jguru.com/faq/view.jsp?EID=42225
РЕДАКТИРОВАТЬ: следующее теперь успешно работает, кажется, это сочетание:
response.setContentType("text/html");
и
cookie.setMaxAge(0);
Прежде чем я делал:
//remove single signon cookie if it hasn't been validated yet
response.setContentType("text/html");
Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, "");
cookie.setDomain(SSORealm.SSO_DOMAIN);
cookie.setMaxAge(-1);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
response.addCookie(cookie);
Который истекает cookie, когда браузер закрыт в соответствии с документацией .
Отрицательное значение означает, что файл cookie не сохраняется постоянно и будет удален при выходе из веб-браузера. Нулевое значение приводит к удалению куки.
Полный рабочий фрагмент файла cookie, срок действия которого истекает:
//remove single signon cookie if it hasn't been validated yet
response.setContentType("text/html");
Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, "");
cookie.setDomain(SSORealm.SSO_DOMAIN);
cookie.setMaxAge(0);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
response.addCookie(cookie);
В моей среде работает следующий код. Хотя на первый взгляд выглядит избыточно,
cookies[i].setValue("");
иcookies[i].setPath("/");
необходимо правильно очистить cookie.источник
Имейте в виду, что cookie на самом деле определяется набором его имени, пути и домена. Если какой-либо из этих трех элементов отличается или существует более одного файла cookie с одним и тем же именем, но с определенными путями / доменами, которые все еще могут быть видны для рассматриваемого URL-адреса, вы все равно увидите, что файл cookie передан по запросу. Например, если URL-адрес « http://foo.bar.com/baz/index.html », вы увидите все файлы cookie, определенные на bar.com или foo.bar.com, или с путем «/» или "/ Баз".
Таким образом, то, что у вас есть, должно работать, если в клиенте определен только один файл cookie с именем «SSO_COOKIE_NAME», доменом «SSO_DOMAIN» и путем «/». Если есть файлы cookie с другим путем или доменом, вы все равно увидите файл cookie, отправленный клиенту.
Чтобы отладить это, перейдите в настройки Firefox -> вкладка «Безопасность» и найдите все cookie с помощью SSO_COOKIE_NAME. Нажмите на каждый, чтобы увидеть домен и путь. Держу пари, вы найдете там не совсем то, что ожидаете.
источник
разве это не сработало? Это удалит все куки, если ответ будет отправлен обратно.
источник
Это код, который я эффективно использовал раньше, передавая
"/"
в качестве параметра strPath.источник
Один особый случай: у куки нет пути.
В этом случае установите путь как
cookie.setPath(request.getRequestURI())
Javascript устанавливает cookie без пути, поэтому браузер показывает его как cookie только для текущей страницы. Если я пытаюсь отправить просроченный файл cookie с
path == /
помощью браузера, отображаются два файла cookie: один с истекшим сроком действия,path == /
а другой сpath == current page
.источник