带你撸出一手好代码
因cookie中存在特殊字符引起Tomcat报错的解决方法

tomcat + spring mvc的网站,在生产环境一直跑的好好的, 可不知何故 , 有人反应网站登录功能异常,后台无法登录。

 

执行登录的目标URL访问报错


错误信息.png


HTTP Status 500 - Request processing failed; nestedception is java.Iang.IIIegaIArgumentException: An invalidaracter [ 32 ] was present in the Cookie value     


据网络上的资料显示,这个问题是tomcatcookie处理器处理cookie时引发的。 Tomcat的某个版本cookie处理器对于cookie的要求是cookie字符串中不能有空格之类的字符。 我通过chrome开发工具反复检查了cookie内容,并没有发现特殊的字符, 当然也有可能这种特殊字符并不能在屏幕上被打印

 

根据网上提供的解决方案,我在写入cookie的时候对cookie的值执行URL编码,这样即使看不见的字符也能被覆盖


 Cookie cookie = new Cookie(key, URLEncoder.encode( val,"UTF-8" ));

 

问题顺利解决

 

解决方法参考地址: https://stackoverflow.com/questions/38687210/error-with-cookie-value-when-adding-a-new-spring-session

作者:陈大侠
日期:2018-01-30

留言(0条)

我要发表留言

您的大名 选填
电子邮箱 选填

欢迎关注微信公众号 「带你撸出一手好代码」

首页    GitHub 知乎 豆瓣 博客园