如何从 Eclipse 中本地 Tomcat7 中的 URL 中删除 jsessionid



我有一个使用 Tomcat7 部署在生产环境中的 Java Web 应用程序。我在生产中使用Tomcat Web Application Manager页面,在上下文路径"/"处部署我的 WAR。在生产中,我在 URL 中看不到jsessionid

但是,在我的开发环境中,在 eclipse 中以 Tomcat7 开头的相同应用程序(因此相同的web.xml)在 URL 中显示jsessionid

web.xml中唯一的会话配置是:

<session-config>
    <session-timeout>15</session-timeout>
</session-config>

我在两个Tomcat7中看到的唯一区别是server.xml

生产:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <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" />
</Host>

当地:

  <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/>
    <Context docBase="MyApp" path="/" reloadable="true" source="org.eclipse.jst.jee.server:MyApp"  />
  </Host>

另一个区别是我在生产中使用 NGinx 从 Tomcat 从端口 80 到 8080 进行代理传递。

我可能错过了什么?

谢谢

您可以在开发环境中使用不支持(或禁用)Cookie 的浏览器或其他客户端。

另一个提示:您可以在 tomcat 7(在您的 web.xml 文件中使用此代码:

<session-config>
     <tracking-mode>COOKIE</tracking-mode>
</session-config>

问题是要使 cookie 正常工作,域名必须至少有两个点 (https://curl.haxx.se/rfc/cookie_spec.html)。

因此,为了使它在本地工作,我必须执行以下操作:

更改/etc/hosts 文件以包含至少带有一个句点的任何域名,指向 127.0.0.1:

127.0.0.1       localhost
127.0.0.1       localhost.test
255.255.255.255 broadcasthost
::1             localhost

更改上下文.xml以包含新域:

<Context sessionCookieDomain=".localhost.test" sessionCookiePath="/"> 
...
</Context>

最新更新