问题描述:
java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateCookieValue(Rfc6265CookieProcessor.java:182)
org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:115)
org.apache.catalina.connector.Response.generateCookieString(Response.java:1010)
org.apache.catalina.connector.Response.addCookie(Response.java:962)
org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:385)
org.apache.jsp.deal_jsp._jspService(deal_jsp.java:126)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
错误代码:
//设置cookie
Cookie cookie=new Cookie("user", user.toString());
cookie.setMaxAge(3600);
resp.addCookie(cookie);
原因:cookie中包含空格
解决方法:
//设置cookie
Cookie cookie=new Cookie("user", URLEncoder.encode(user.toString(),"UTF-8"));
cookie.setMaxAge(3600);
resp.addCookie(cookie);