Атрибут Path для Cookie не влияет на последующие запросы

У меня есть веб-служба REST, которая отправляет cookie в ответ. URL-адрес REST выглядит так: http://localhost:8080/myfoo/service/v1/acc/login

В моем java-коде я установил cookie, как показано ниже

 Response.ok(entity).cookie(new NewCookie("JSESSIONID", "12344", "/", "localhost", null, -1, false));

Когда я вижу заголовок ответа веб-службы, заголовок файла cookie выглядит ниже

"JSESSIONID=12344;Domain=localhost;Path="/";Version=1"

Но когда я делаю запрос на другой путь в том же домене, что и ниже

http://localhost:8080/mybar/service/v1/acc/profile

cookie не отправляется в запросе.

Итак, когда я просматривал файлы cookie в хранилище браузера (используя настройки содержимого), я увидел ниже запись для файла cookie.

Name:   JSESSIONID
Content: 12344
Domain: localhost
Path:   /myfoo/service/v1/acc/login
Send for:   Any kind of connection
Accessible to script:   Yes
Created:    Wednesday, July 13, 2016 at 5:04:40 PM
Expires:    When the browsing session ends

Итак, если вы заметили, атрибут пути cookie в хранилище браузера отличается от того, на что ответила служба REST. Какие-нибудь идеи что здесь не так?

Ответ 1

После долгого исследования я нашел основную причину. Проблема была в библиотеке cxf 3.1.6. При преобразовании объектов cookie в заголовки он цитирует специальные символы. Следовательно, в заголовке Set-Cookie он указывал/устанавливал код java на "/". Но браузер видит "/" как недопустимый и устанавливает путь к текущему пути.

Но, 3.1.7-SNAPSHOT исправляет это. После того, как я обновил свою библиотеку cxf до указанной выше версии, проблема будет решена.

Если мы не хотим обновлять библиотеку, мы можем вручную установить заголовок Set-Cookie в качестве альтернативного решения.

Вот ссылка: https://issues.apache.org/jira/browse/CXF-6862