Как удалить куки на сервере с JAX-RS NewCookie? - PullRequest
7 голосов
/ 10 ноября 2011

Я хочу удалить куки на сервере (с помощью установки Expires в прошлое). Как я могу сделать это с javax.ws.rs.core.NewCookie? Я пытаюсь это, но это не работает:

return Response.ok()
  .entity("hello world!")
  .cookie(
    new NewCookie(
      "foo",
      "",
      "/",
      ".example.com",
      1,
      "no comment",
      0, // maxAge
      false
    )
  )
  .build();

Этот фрагмент создает этот заголовок HTTP:

Set-Cookie:foo=;Version=1;Comment="no comment";Domain=.example.com;Path=/

Этот заголовок не удаляет куки с сервера. Каков возможный обходной путь?

Ответы [ 4 ]

9 голосов
/ 10 ноября 2011

Вот как это работает (довольно грязный подход):

return Response.ok()
  .header(
    "Set-Cookie",
    "foo=deleted;Domain=.example.com;Path=/;Expires=Thu, 01-Jan-1970 00:00:01 GMT"
  );
3 голосов
/ 10 ноября 2011

Я не могу попробовать предложенное, но это должно сработать (так как это обычный обходной путь для API сервлетов Java для удаления cookie).

Шаг 1. Получите доступ к HttpServletResponse. Для этого объявите в вашем сервисе что-то вроде:

@Context
HttpServletResponse _currentResponse;

Шаг 2. Предоставьте клиентской стороне шанс удалить куки-файлы, установив срок действия

Cookie userCookie = new Cookie(cookieName, "");
_currentResponse.setContentType("text/html");
userCookie.setMaxAge(0);
_currentResponse.addCookie(userCookie);
1 голос
/ 10 ноября 2018

Это сработало для меня!Обратите внимание, что я устанавливаю максимальный возраст 0 и дату истечения срока до текущего времени.

NewCookie mycookie= new NewCookie("mycookie", null, "/", "", NewCookie.DEFAULT_VERSION, null, 0, new Date(), false, false);
return Response.ok().cookie(mycookie).build();
0 голосов
/ 25 апреля 2019

это также работает:

NewCookie mycookie = new NewCookie("mycookie", null, "/", null, null, 0, false, true);
return Response.ok().cookie(mycookie).build();

извлечение из заголовка ответа:

set-cookie: mycookie=;Version=1;Path=/;Max-Age=0;HttpOnly
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...