Я хочу удалить cookie с именем домена и контекстным путем как "/", который выполняется на моем облачном сервере.
У меня есть код для очистки cookie в облачном сервере
Cookie cookie = new Cookie(cookieName, null);// cookieName = TEST_COOKIE
String cookiePath = request.getContextPath();
cookie.setPath(cookiePath); // path = "/"
cookie.setDomain("mydomain.com");
cookie.setMaxAge(0);
response.addCookie(cookie);
если я заметил куки файл в моем браузере, у меня есть данные ниже
cookie name = "TEST_COOKIE" value = "MUZJd3NuNDhy" domain = "mydomain.com" path = "/"
где в моем локальном хосте выше код работает нормально, без настройки имени домена. даже я пытался с пустым доменным именем, которое не работает. не знаю, как это сделать, направление очень ценится.
EDIT - ниже код без домена в localhost работает нормально с контентом в качестве /MyApp.
Cookie cookie = new Cookie(cookieName, null);
String cookiePath = request.getContextPath();
cookie.setPath(cookiePath); // path = "/"
cookie.setMaxAge(0);
response.addCookie(cookie);
когда я удалил contextPath "/MyApp", он также перестал работать в localhost, где на моем облачном сервере мой контекстный путь "/".
После многого отладки я обнаружил, что request.getContextPath возвращал пустую строку вместо "/" на моем удаленном сервере и в jave doc
* Returns the portion of the request URI that indicates the context
* of the request. The context path always comes first in a request
* URI. The path starts with a "/" character but does not end with a "/"
* character. For servlets in the default (root) context, this method
* returns "". The container does not decode this string.
потому что у меня есть корневой контекст, метод возвращает пустую строку вместо "/", я исправил ее ниже кода и теперь работает.
if (cookiePath.isEmpty()) {
cookie.setPath("/");
} else {
cookie.setPath(cookiePath);
}
Вы не можете установить Cookie
как null
но вы можете удалить его (то есть: когда вы попытаетесь получить его в следующий раз, он вернет null).
Просто измените свою первую строку:
Cookie cookie = new Cookie(cookieName, "");
String cookiePath = request.getContextPath();
cookie.setPath(cookiePath); // path = "/"
cookie.setDomain("mydomain.com");
cookie.setMaxAge(0);
response.addCookie(cookie);
setMaxAge(0)
?