有一个jsp+servlet 架构的项目,发布到外网后,直接在tomcat部署ssl证书后发现,每次登录校验成功之后,请求到首页后,cookie的JSESSIONID改变,随即登出。
tomcat的server.xml配置如下:
<Connector port="8453" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/u01/apache-tomcat-7.0.94/conf/cert/xxx.com.cn.pfx"
keystoreType="xx"
keystorePass="xxx"
clientAuth="false" sslProtocol="TLS" />
在tomcat的web.xml配置cookie后,问题解决:即启用了https的cookie
<session-config>
<session-timeout>30</session-timeout>
<cookie-config>
<secure>true</secure>
<http-only>true</http-only>
</cookie-config>
</session-config>
理论上,不配置secure为true,在http和https下cookie都应该可以正常创建,因此具体原因待查。但目前这种配置可以解决。
另外相同的项目在nginx下,
用nginx配置ssl证书,
不带项目名称(将项目作为root)可以正常登录;
带项目名称就会出现相同的问题,登录后cookie改变,无法获取session自动登出。
而另外一个spring boot的项目打的war包则完全正常。
具体原因也待查找。