最近,我部署了一個網站,將cookie存儲在瀏覽器中,產品名稱作爲cookie值。但有些產品的名稱中有控制字符。因此,當這些產品名稱保存在Cookie中時,會拋出Cookie值中的控制字符導致的IllegalArgumentException。處理java.lang.IllegalArgumentException:由cookie值中的控制字符引起
java.lang.IllegalArgumentException: Control character in cookie value or attribute.
at org.apache.tomcat.util.http.CookieSupport.isHttpSeparator(CookieSupport.java:169)
at org.apache.tomcat.util.http.Cookies.getTokenEndPosition(Cookies.java:493)
at org.apache.tomcat.util.http.Cookies.doProcessCookieHeaderOriginal(Cookies.java:283)
at org.apache.tomcat.util.http.Cookies.processCookieHeader(Cookies.java:233)
at org.apache.tomcat.util.http.Cookies.processCookies(Cookies.java:141)
at org.apache.tomcat.util.http.Cookies.getCookieCount(Cookies.java:107)
at org.apache.catalina.connector.CoyoteAdapter.parseSessionCookiesId(CoyoteAdapter.java:1163)
at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:914)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:532)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
一些想法在我腦海中,我必須在存儲在cookie之前編碼名稱。
但問題是,許多用戶已經遇到問題,無法瀏覽該網站。
是否有任何方法可以在不更改cookie值的情況下處理異常,或者有任何方法可以刪除有問題的舊cookie或其他任何其他方法。
我怎樣才能運行JavaScript,而該網站處於例外模式? –
啊哈哈,我必須承認客戶端修復沒有意義! 顯然我會深入Tomcat的屬性(特別檢查我突出顯示的2),這是一個乾淨的解決方案。 – niilzon