最近我遇到奇怪的問題與cookies發送到我的後端服務器(這是使用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標頭被髮送到服務器:
接頭:{接受= [應用/ JSON,文本/無格式,/],接受編碼 = [gzip的,放氣,lzma], Accept-Language = [en-US,en; q = 0.8],Cookie = [BlueStripe.PVN = 300d00000051; APP_USER =「test_user1」; ; SMSESSION =(省略)]}
問題是在它們之間有空格的標題中使用雙分號。 CXF將它視爲沒有名稱和沒有值的cookie並引發異常。
此問題可能與Siteminder SMSESSION Cookie有關,每隔一分鐘左右過期一次。
任何幫助將不勝感激。
您是否檢查了答案?正如我所說,不可能在沒有看到客戶代碼 – pedrofb
Pedrofb的情況下完全回答,我非常感謝您的幫助。將盡力挖掘這個問題並儘快給出答覆。謝謝。 – stinger
我發現這個問題可能與我們用於實現SSO的Siteminder有關。它添加了SMSESSION cookie來請求並每分鐘更改一次。而這個異常只發生在這個時間間隔,當Siteminder應該更新一個SMSESSION cookie值(我提交HTTP請求與舊的cookie值,它攔截請求和更改cookie,但留空白值''導致CXF崩潰) – stinger