Java加上ContextPath后Session失效

应用放在Tomcat7下,地址为http://121.199.44.218,在此url下登录后,切换到http://121.199.44.218/crosstalk/则已经登录的用户会变成未登录。

http://121.199.44.218和http://121.199.44.218/crosstalk/是同一个应用,Tomcat的Server.xml中Host配置如下:

unpackWARs="true" autoDeploy="true">

     <Context path="/" docBase="crosstalk" reloadable="true" crossContext="true"/>

    <!-- SingleSignOn valve, share authentication between web applications
         Documentation at: /docs/config/valve.html -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->

    <!-- Access log processes all example.
         Documentation at: /docs/config/valve.html
         Note: The pattern used is equivalent to using pattern="common" -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

其它没有做修改,谢谢。

在这种情况下,可能是因为您的应用在处理登录状态时存在问题,导致在访问 http://121.199.44.218/crosstalk/ 时,系统认为用户已经未登录。


您可以尝试在访问 http://121.199.44.218/crosstalk/ 时,在浏览器的开发者工具中查看网络请求,看看是否有任何网络请求出现异常。您还可以尝试在访问 http://121.199.44.218/crosstalk/ 时,在应用的日志中查看是否有任何错误信息。


此外,您可以检查您的应用是否正确地处理了跨域请求(Cross-Origin Resource Sharing,CORS)。如果您的应用存在跨域请求的问题,则可能会导致登录状态丢失。