记一次由tomcat版本引发的问题

starlin 701 2018-03-08

最近配合运维搭建Docker环境,需要把原来的包部署在Docker环境,因运维在Docker环境部署Tomcat是8.5的版本,在启动项目的时候报如下错误:

2018-03-08 14:42:35.425 [http-nio-8080-exec-5] ERROR   java.lang.RuntimeException: 
org.springframework.web.util.NestedServletException: Request processing failed; 
nested exception is java.lang.IllegalArgumentException: An invalid domain [.xx.com] was specified for this cookie    

An invalid domain [.xx.com] was specified for this cookie 这个无效的域名是什么鬼,代码中确实是有这样的一个域名,
但是测试环境和生产环境重来就没有报这个错误
后面google才知道,原来Docker环境使用的是Tomcat8.5版本,测试和生产使用的是8.0的版本
后更换tomcat版本解决此问题

这是其中一种解决方案,另外一种解决方案就是改代码了
因为在项目中我们使用单点登录功能,会使用cookie进行信息的保存,如下

Cookie cookie = new Cookie("testCookie", "test");
cookie.setDomain(".xxx.com");
cookie.setPath("/");
cookie.setMaxAge(36000);
resp.addCookie(cookie);

只需要将域名设置为一级域名即可解决此问题

Cookie cookie = new Cookie("testCookie", "test");
cookie.setDomain("xxx.com");
cookie.setPath("/");
cookie.setMaxAge(36000);
resp.addCookie(cookie);

# Tomcat