установка cookie на null не работает в Java

1

Я хочу удалить 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, где на моем облачном сервере мой контекстный путь "/".

  • 0
    Вы пытались установить ненулевое значение, но все еще с setMaxAge(0) ?
Теги:
cookies
session-cookies
setcookie

2 ответа

1
Лучший ответ

После многого отладки я обнаружил, что 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);
    }
0

Вы не можете установить 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);
  • 0
    не работает приятель .. кусок кода работает в локальном, но он не работает в облаке

Ещё вопросы

Сообщество Overcoder
Наверх
Меню