1. 程式人生 > >頭大?An invalid character [32] was present in the Cookie value

頭大?An invalid character [32] was present in the Cookie value

在跟著demo學習時,測試的時候遇到這個問題:

Type Exception Report

Message An invalid character [32] was present in the Cookie value

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

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:1019)
	org.apache.catalina.connector.Response.addCookie(Response.java:967)
	org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:386)
	com.itheima.lastaccesstime.LastAccessTimeServlet.doGet(LastAccessTimeServlet.java:26)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Note The full stack trace of the root cause is available in the server logs.

Apache Tomcat/8.5.23

異常報在:

response.addCookie(cookie);

這一行!

 

cookie這個物件儲存的是:

"yyyy-MM-dd hh:mm:ss"

這個格式的字串,那麼在查詢相關資料後,有提到:name引數不能儲存含有逗號、分號、美元($)、空格等符號,否則會出現:

java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value

這個異常!

所以,在我們獲得當前時間:

Date date = new Date();
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
	String currentTime = sdf.format(date);
		
	//1、建立Cookie 記錄當前的最新的訪問時間
	Cookie cookie = new Cookie("lastAccessTime",currentTime);

時間的時候,有格式化輸出yyyy-MM-dd hh:mm:ss,那麼,在這裡面就包含了一個 (空格),所以會報這個異常!

 

解決思路:去掉空格,用其他合法的符號代替!比如就用個 - 吧!

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");

執行一下:

您上次的訪問的時間是:2018-10-23-11:23:00

解決了!