1、Cookie domain的前缀问题
domain的设置可以是“xxx.yyy.com”或“.xxx.yyy.com”。两者的区别在是否有前缀“.”。
区别:不带“.”的cookie只能应用在一级域名,不能应用到二级域名“zzz.xxx.yyy.com”;而带“.”的cookie既可以应用在一级域名,也可以应用在子域名“zzz.xxx.yyy.com”中
Tomcat7升级到Tomcat8后,CookieProcessor由默认org.apache.tomcat.util.http.LegacyCookieProcessor的实现在Tomcat8及其以后的版本中改为了org.apache.tomcat.util.http.Rfc6265CookieProcessor的实现,升级后的实现对Cookie的domain前缀进行了校验,不允许使用“.”或“-”作为前缀,否则会导致抛出异常“An invalid domain [{0}] was specified for this cookie”
解决方式:
在Tomcat的conf/context.xml中新增:
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />
参考:
https://stackoverflow.com/questions/9618217/what-does-the-dot-prefix-in-the-cookie-domain-mean
https://tomcat.apache.org/tomcat-8.0-doc/config/cookie-processor.html
https://bz.apache.org/bugzilla/show_bug.cgi?id=59703
2、Tomcat8升级的权限问题
# UMASK (Optional) Override Tomcat's default UMASK of 0027
Tomcat8默认权限是0027,导致在nginx转发时没有对应静态文件的读权限,需要进行如下修改:
修改 catalina.sh 中的UMASK的默认值为“0022”,或作为变量设置