Недавно я столкнулся странные проблемы с куки отправляются на мой бэкэнда сервер (который использует CXF 3.1.2 для обработки HTTP-запросов), он бросает исключение:CXF проблема с печеньем с помощью Chrome
java.lang.IllegalArgumentException: Cookie is malformed :
at org.apache.cxf.jaxrs.impl.CookieHeaderProvider.fromString(CookieHeaderProvider.java:66) ~[cxf-rt-frontend-jaxrs-3.1.2.jar:3.1.2]
at org.apache.cxf.jaxrs.impl.CookieHeaderProvider.fromString(CookieHeaderProvider.java:26) ~[cxf-rt-frontend-jaxrs-3.1.2.jar:3.1.2]
at javax.ws.rs.core.Cookie.valueOf(Cookie.java:126) ~[javax.ws.rs-api-2.0.1.jar:2.0.1]
at org.apache.cxf.jaxrs.impl.HttpHeadersImpl.getCookies(HttpHeadersImpl.java:117) ~[cxf-rt-frontend-jaxrs-3.1.2.jar:3.1.2]
at org.apache.cxf.jaxrs.impl.AbstractRequestContextImpl.getCookies(AbstractRequestContextImpl.java:59) ~[cxf-rt-frontend-jaxrs-3.1.2.jar:3.1.2]
at com.acmecorp.acmeproject.whitelist.filter.AuthenticationInFilter.filter(AuthenticationInFilter.java:34) ~[AuthenticationInFilter.class:na]
at org.apache.cxf.jaxrs.utils.JAXRSUtils.runContainerRequestFilters(JAXRSUtils.java:1636) ~[cxf-rt-frontend-jaxrs-3.1.2.jar:3.1.2]
Иногда это происходит, когда я использую Chrome или Opera, но это не было воспроизведено в Firefox или IE. В журналах CxF я нашел следующий HTTP заголовки отправляются на сервер:
заголовкам: {Accept = [приложения/JSON, текст/равнина, /], Accept-Encoding = [GZIP, выкачать , lzma], Accept-Language = [en-US, en; q = 0.8], Cookie = [BlueStripe.PVN = 300d00000051; APP_USER = "test_user1"; ; SMSESSION = (опущено)]}
Проблема заключается в двойной точке с запятой в заголовках с пространством между ними. CXF рассматривает его как файл cookie, который не имеет имени и не имеет значения и выдает исключение.
Эта проблема может быть связана с файлом cookie Siteminder SMSESSION, срок действия которого истекает каждую минуту.
Любая помощь будет высоко оценена.
Вы проверили ответ? Как я уже сказал, невозможно полностью ответить, не видя код клиента – pedrofb
Pedrofb, я очень ценю вашу помощь. Попытайтесь разобраться в этом вопросе и дать ответ как можно скорее. Благодарю. – stinger
Я обнаружил, что эта проблема может быть связана с Siteminder, которую мы используем для реализации SSO. Он добавляет cookie SMSESSION для запроса и изменения его каждую минуту. И это исключение возникает только в этом временном интервале, когда Siteminder должен обновить значение cookie SMSESSION (я отправляю HTTP-запрос со старым значением cookie, он перехватывает запрос и изменяет cookie, но оставляет пустое значение '', которое приводит к сбою CXF) – stinger