Java Web 中response.addCookie(cookie)报错

mac2022-06-30  23

出错代码位置:

//此cookie的value中含有逗号!!! Cookie cookie = new Cookie("bookIds", "1" + "," + "2"); response.addCookie(cookie); 严重: Servlet.service() for servlet [cn.hestyle.web.servlet.BrowseBookServlet] in context with path [/Cookie_Test] threw exception java.lang.IllegalArgumentException: An invalid character [44] was present in the Cookie value at org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateCookieValue(Rfc6265CookieProcessor.java:189) at org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:115) at org.apache.catalina.connector.Response.generateCookieString(Response.java:973) at org.apache.catalina.connector.Response.addCookie(Response.java:925) at org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:385) at cn.hestyle.web.servlet.BrowseBookServlet.doGet(BrowseBookServlet.java:34) at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source)

解决办法:

//将逗号修改为减号、加号等等 Cookie cookie = new Cookie("bookIds", "1" + "-" + "2"); response.addCookie(cookie);

从 前 两 句 可 以 看 出 是 由 于 c o o k i e 出 现 非 法 字 符 , \color{red}从前两句可以看出是由于cookie出现非法字符, cookie

注 意 c o o k i e 的 v a l u e 中 不 能 含 有 空 格 、 逗 号 、 分 号 等 特 殊 字 符 ! ! ! \color{red}注意cookie的value中不能含有空格、逗号、分号等特殊字符!!! cookievalue!

硬是调试了一下午。。。。

最新回复(0)