有一個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包則完全正常。
具體原因也待查找。